每次在表中进行“更新”时,我都想在“日期”列中插入今天的日期,但前提是此单元格包含“ 0000-00-00”
我正在尝试以下代码:
IF (OLD.date = '0000-00-00') THEN SET NEW.date = now()
我收到此错误:You have an error in your SQL syntax...
怎么了?我想我已经尝试了所有:/
//编辑
整个查询:
CREATE TRIGGER `my_name`
BEFORE INSERT ON `my_database`
FOR EACH ROW
IF (OLD.date = '0000-00-00') THEN SET NEW.date = now()
错误:INSERT触发器上没有OLD行
如果我仅添加以下内容:
CREATE TRIGGER `my_name`
BEFORE INSERT ON `my_database`
FOR EACH ROW SET NEW.date = now()
一切都很好...
答案 0 :(得分:0)
答案在于the documentation:
在
INSERT
触发器中,只能使用NEW.col_name
;没有旧行了。
代码的其他问题:
BEGIN
和END;
关键字IF
块必须以END IF;
终止您的触发器应表示如下:
CREATE TRIGGER my_trigger
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
IF NEW.date = '0000-00-00' THEN
SET NEW.date = NOW();
END IF;
END;
-- create a test table
CREATE TABLE my_table(id int primary key, `date` DATE);
-- create the trigger
DELIMITER //
CREATE TRIGGER my_trigger
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
IF NEW.date = '0000-00-00' THEN
SET NEW.date = NOW();
END IF;
END;
//
-- insert a record with date value '000-00-00'
INSERT INTO my_table (id, `date`) values (1, '0000-00-00');
-- check the content of the table
SELECT * FROM my_table;
| id | date |
| --- | ---------- |
| 1 | 2019-09-23 |