我一直在尝试创建一个触发器,但是我的尝试失败了。我似乎得到一个错误(#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