在插入数据时INSERT INTO CommunicationContactusernamecontactstatuscreated VALUESROWJimKate1timeROWKateJim0timeROWJimTom1timeROWTomJim0time;以下这个触发器抛出了异常CREATE TRIGGER CommunicationContact_BEFORE_INSERT BEFORE
该触发器语法有误,应该将ROW改为VALUES。
正确的触发器语法如下:
CREATE TRIGGER CommunicationContact_BEFORE_INSERT BEFORE INSERT ON CommunicationContact FOR EACH ROW
BEGIN
DECLARE contactable BIT(1);
SELECT contactable INTO contactable FROM CommunicationProfile WHERE username = NEW.contact;
IF contactable = 1 THEN
UPDATE CommunicationProfile SET
contactrequests = CASE WHEN NEW.status = 0 THEN contactrequests + 1 ELSE contactrequests END,
contactrequested = CASE WHEN NEW.status = 1 THEN contactrequested + 1 ELSE contactrequested END
WHERE username = NEW.username;
ELSE
SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'Insertion aborted';
END IF;
END $$
在插入数据时,应该使用VALUES语句,如下所示:
INSERT INTO CommunicationContact(username,contact,status,created) VALUES
('Jim','Kate',1,@time),('Kate','Jim',0,@time),
('Jim','Tom',1,@time),('Tom','Jim',0,@time);
原文地址: https://www.cveoy.top/t/topic/bwhm 著作权归作者所有。请勿转载和采集!