我想創建SQLite中觸發,將允許用戶編輯欄,將以前的行復製爲新條目,並更改上一所依據的任何數據條目。這些都是相關的表:SQLite觸發器來更新使用數據的外鍵
CREATE TABLE "Menu"
("ProductID" INTEGER PRIMARY KEY AUTOINCREMENT,
"Description" VARCHAR, "Code" VARCHAR, "Price_Pence" INTEGER)
CREATE TABLE "OrderItems"
("OrderItemsID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
"ProductID" INTEGER, "Quantity" INTEGER,
FOREIGN KEY(ProductID) REFERENCES Menu (ProductID))
菜單存儲數據,如:
OrderItemsID | ProductID | Quantity
------------------------------------
1 | 3 | 1
2 | 2 | 1
etc.
我希望把它在那裏我可以改變價格:
ProductID | Description | Code | Price_Pence
----------------------------------------------
1 | Egg Salad | ESL | 200
2 | Ham Salad | HSL | 200
3 | Cheese Sandwich | CSD | 150
etc.
的OrderItems商店像數據例如,如果我想要奶酪三明治= 200,我可以更新。如果我這樣做,以前的訂單,現在將有不正確的價格,所以我需要有一個觸發器,它會插入新行插入菜單,會自動給該行一個新的ProductID所以在這種情況下,它會變成:
ProductID | Description | Code | Price_Pence
----------------------------------------------
1 | Egg Salad | ESL | 200
2 | Ham Salad | HSL | 200
3 | Cheese Sandwich | CSD | 200
4 | Cheese Sandwich | CSD | 150
這則需要改變的OrderItems如以前的任何條目
OrderItemsID | ProductID | Quantity
------------------------------------
1 | 4 | 1
2 | 2 | 1
目前我有這個觸發:
CREATE TRIGGER "menuArchive"
BEFORE UPDATE OF Price_Pence ON Menu
BEGIN
INSERT INTO Menu
(Description, Code, Price_Pence)
VALUES (old.Description, old.Code, old.Price_Pence)
;END
這將插入新的進入,我需要菜單。但是,我無法確定更新OrderItems中ProductID的最佳方式,而無需更改每個訂單的productID。
您可以使用WHERE篩選行。 –
@CL。 我試圖用一個WHERE然而,是不確定的觸發器是BEFORE UPDATE觸發器我將如何將新產品ID爲的OrderItems表。當然,您需要使用AFTER INSERT或其他東西來查看新的ProductID? – TomRGarr
觸發器已知道要更新的行的新值。 –