【发布时间】:2017-06-11 16:40:35
【问题描述】:
我有表 lbs_records,包含字段:
taken TIMESTAMP NOT NULL DEFAULT current_timestamp(),
expected TIMESTAMP NULL DEFAULT NULL ,
我有触发器:
DELIMITER $$
DROP TRIGGER IF EXISTS trig_records_correct $$
CREATE TRIGGER trig_records_correct BEFORE INSERT ON lbs_records
FOR EACH ROW BEGIN
IF ( NEW.expected IS NULL ) THEN
SET NEW.expected = adddate( NEW.taken, ( SELECT lbs_books.`4home_ondays`
FROM lbs_books WHERE lbs_books.id = NEW.book_id ) );
END IF;
UPDATE lbs_books
SET lbs_books.in_stock = lbs_books.in_stock -1
WHERE lbs_books.id = NEW.book_id;
END $$
DELIMITER ;
当我尝试在此表中插入行时,我的触发器仅更改(减少)lbs_books.in_stock 中 id = NEW.book_id 的行的值。但它不会更改现在插入的行中的“预期”字段。插入行后,“预期”字段为空。
- 当触发器开始为查询
INSERT INTO lbs_records (user_id, book_id) VALUES (5,1);工作时,我是否正确,它也与字段一起获得行 '采取':'当前日期时间','预期':'null'?
- 为什么在插入行之后,此行包含字段“预期”,即使在触发器的工作之后为空?
【问题讨论】:
-
您能否提供一些来自 lbs_books 的样本数据(尤其是 4home_ondays 值)
-
@NigelRen,是的 screenshot