【发布时间】:2017-08-23 19:20:06
【问题描述】:
我想知道我是否可以在没有触发器的情况下执行此操作:
我想要一个INT 列,它会自动更新以增加整数值。
这与TIMESTAMP 或DATETIME 列上的ON UPDATE CURRENT_TIMESTAMP 相似但不同。
我在文档中读到 ON UPDATE 是不可能的,因为我只能使用文字值,除非列是 TIMESTAMP。
MySQL timestamp initialization
我可以做其他事情来代替触发器吗?
[更新 1]
这个例子是我想要实现的:
CREATE TABLE myTable (
stuff VARCHAR (100),
special_col INT DEFAULT 123456789
);
INSERT INTO myTable (stuff) VALUES ('something or other');
SELECT * FROM myTable;
stuff | special_col
----------------------------------------------------
something or other | 123456789
UPDATE myTable SET stuff = 'new info';
SELECT * FROM myTable;
stuff | special_col
----------------------------------------------------
new info | 123456790
列增加的值不必是 1。它必须比以前更高。
[更新 2]
我认为我可以使用一些很酷的 mySQL 语法 - 它执行了很多非 ANSI SQL,我认为可能有一种自定义方式来执行它。
反正我已经放弃了,我正在实现一个触发器:
CREATE TRIGGER trg_data_update BEFORE UPDATE ON myTable
FOR EACH ROW SET NEW.special_col = OLD.special_col + 1;
【问题讨论】:
-
你的意思是自动更新增量值?你能给我们举个例子吗?
-
我添加了一个示例并强调了几点,以说明为什么这不是一个骗局。如果您能取消欺骗标志,将不胜感激。
-
你不能,你需要一个触发器。
-
未来的某一天,mySQL 可能会推出一个允许这样做的版本。