嗨我的mysql觸發語法有問題,我希望它在NEW transaction_id上更新我的copy_instock行,當電影被僱傭從copy_instock中減去1時,則在電影返回時將其更新爲將1加回到copy_instock。或者我怎樣才能以不同於MySql的方式實現這一點。 我的表是低於我的觸發器是不正確的mysql觸發器添加或減少庫存數量,當項目被僱用時減1並且當項目返回時增加1
CREATE TABLE IF NOT EXISTS `hires` (
`transaction_id` int(11) NOT NULL,
`movie_id` int(11) NOT NULL,
`customer_id` int(11) NOT NULL,
`hire_cost` double(4,2) NOT NULL DEFAULT '3.00',
`date_hired` date DEFAULT NULL,
`days_hire` int(11) NOT NULL DEFAULT '1',
`date_returned` date DEFAULT NULL,
`total_cost` double(4,2) DEFAULT NULL,
`copy_instock` int(3) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
CREATE TRIGGER update_instock AFTER INSERT ON hires
FOR EACH ROW
BEGIN
if (date_returned != NULL) {
UPDATE hires SET (NEW.copy_instock = OLD.copy_instock - 1)
}
Elseif (date_returned != date) {
UPDATE hires SET (NEW.copy_instock = OLD.copy_instock + 1)
END
壞主意。如果有人做'更新員工設置copy_instock = 50 kajillion',而你以前只有3個庫存?現在你有50 kajillion + 1的股票價值。觸發器應該簡單地更新原始值+/- 1,不會取得更新的值並修改它。 – 2014-10-09 17:11:55
一旦設置了5份,我希望它在聘用和返回時自動調整。這就是我想要這個觸發器消除人爲錯誤的原因,正如你評論的那樣。我在web dev dp.course中做這個評估。感謝您的評論 – Vasko 2014-10-09 17:17:31