该触发器语法有误,应该将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);

在插入数据时INSERT INTO CommunicationContactusernamecontactstatuscreated VALUESROWJimKate1timeROWKateJim0timeROWJimTom1timeROWTomJim0time;以下这个触发器抛出了异常CREATE TRIGGER CommunicationContact_BEFORE_INSERT BEFORE

原文地址: https://www.cveoy.top/t/topic/bwhm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录