我想知道如果没有触发器我是否可以这样做:
我想要 INT
列,它会自动更新以增加整数值。
这与ON UPDATE CURRENT_TIMESTAMP
或TIMESTAMP
列上的DATETIME
相似但不相同。
我在文档中读到了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;
答案 0 :(得分:0)
根据docs
在UPDATE中添加一个到special_colUPDATE myTable SET stuff = 'new info', special_col=special_col+1;