MySQL 创建一个自动更新以增加值的整数列
MySQL create an integer column that auto-updates to increment value
我想知道我是否可以在没有触发器的情况下执行此操作:
我想要一个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;
根据 docs
向更新中的 special_col 添加一个
UPDATE myTable SET stuff = 'new info', special_col=special_col+1;
我想知道我是否可以在没有触发器的情况下执行此操作:
我想要一个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;
根据 docs
向更新中的 special_col 添加一个UPDATE myTable SET stuff = 'new info', special_col=special_col+1;