我有一张桌子 staff
同 office
柱。目前 office
列不接受NULL值。持久存在于此表上的应用程序有一个错误,这意味着,当工作人员尚未分配办公室时,它会尝试在表上插入NULL值。
我被要求使用触发器来拦截插入物 Staff
表和检查是否 office
value为NULL并将其替换为value N/A
。
以下是我到目前为止的尝试,但确实如此 error
试图实施。关于如何解决这个问题的任何想法。
CREATE TRIGGER staffOfficeNullReplacerTrigger BEFORE INSERT ON Staff
FOR EACH ROW BEGIN
IF (NEW.office IS NULL)
INSERT INTO Staff SET office="N/A";
END IF
END;
错误:
MySQL数据库错误:您的SQL语法有错误;检查
与您的MySQL服务器版本对应的手册
在'INSERT INTO Staff SET office =“N / A”附近使用的语法;结束'
首先,更改表以允许NULL:
ALTER TABLE Staff MODIFY office CHAR(40) DEFAULT "N/A";
(更改 CHAR(40)
任何合适的东西。)然后你可以用作你的触发器:
CREATE TRIGGER staffOfficeNullReplacerTrigger
BEFORE INSERT
ON Staff
FOR EACH ROW BEGIN
IF (NEW.office IS NULL) THEN
SET NEW.office = "N/A";
END IF
不应该是这样的:
DELIMITER $$
CREATE TRIGGER staffOfficeNullReplacerTrigger BEFORE INSERT ON Staff
FOR EACH ROW BEGIN
IF (NEW.office IS NULL) THEN
INSERT INTO Staff(office) VALUES("N/A");
END IF;
END$$
CREATE TRIGGER staffOfficeNullReplacerTrigger BEFORE INSERT ON Staff
FOR EACH ROW BEGIN
IF (NEW.office IS NULL)
INSERT INTO Staff SET office="N/A";
END IF
; END IF后添加半结肠
END;