我一直在嘗試創建一個觸發器,但是我的嘗試失敗了。我似乎得到一個錯誤(#1064),我無法解決。有人可以解釋或證明語法中的任何錯誤。如何在sql中創建觸發器
讓我指定:
我已經delivery_id在交付表, 我也delivery_id在entry_log表的外鍵的主鍵。 通過比較這兩個ID(如果爲true),會返回一個文本指的是位的輸出(0或1)
DELIMITER //
DROP TRIGGER IF EXISTS entry_trigger//
CREATE TRIGGER entry_trigger BEFORE INSERT ON entry_log
FOR EACH ROW
BEGIN
DECLARE @xentry VARCHAR(45)
DECLARE @inta bit
SET @inta = SELECT allowed
FROM delivery
WHERE delivery.delivery_id = entry_log.delivery_id;
CASE
when @inta = 0 then @xentry = 'Acces Denied'
when @inta = 1 then @xentry = 'Acces Allowed'
END CASE
INSERT INTO entry_log(entry_time,access_allowed) VALUES(now(),@xentry);
END
//
這種CASE語句也是一個問題嗎?它不是一個IF語句,還是將CASE嵌入到後續的INSERT中? – MatBailie
我不確定,我剛看到第一個問題。還有更多。我將在我的回答更新中解決此問題 – luksch
我已將其更改爲END CASE:我仍然收到第5行的錯誤(#1064) – theone