【发布时间】:2013-12-23 16:40:52
【问题描述】:
我正在使用 MySQL 5.1 编写一个 Before Insert 触发器。为此,我想检查receipt_no 列,如果receipt_no 已经在表中,则增加version_no。
我假设如果没有使用SELECT INTO 放置行,则此触发器将失败,这正是我想要的,因此列上具有default 0 默认值的表通过。
但是版本号似乎被重复了。这里的问题是什么?
表格布局的形式为:
`id - 自动增加主键
receipt_no - 唯一约束 |
version_no - 唯一约束 |
其他不相关的列`
CREATE TRIGGER `increment_version` BEFORE INSERT ON `my_table` FOR EACH ROW BEGIN
DECLARE version INTEGER;
SELECT version_no INTO version FROM my_table WHERE receipt_no = NEW.receipt_no LIMIT 1;
SET NEW.version_no = version + 1;
END
【问题讨论】:
-
你应该检查一下 IF version IS NOT NULL THEN END IF ;