我有一张staff带office柱子的桌子.目前,该office列不接受NULL值.持久存在此表上的应用程序有一个错误,这意味着,当工作人员尚未分配办公室时,它会尝试在表上插入NULL值.
我被要求使用触发器拦截插入到Staff表上并检查office值是否为NULL并将其替换为值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;
Run Code Online (Sandbox Code Playgroud)
错误:
MySQL数据库错误:您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在'INSERT INTO Staff SET office ="N/A"附近使用正确的语法; 结束'
unu*_*tbu 19
首先,更改表以允许NULL:
ALTER TABLE Staff MODIFY office CHAR(40) DEFAULT "N/A";
Run Code Online (Sandbox Code Playgroud)
(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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42004 次 |
| 最近记录: |