MySQL创建一个整数列,自动更新为增量值

时间:2017-08-23 19:20:07

标签: mysql ddl

我想知道如果没有触发器我是否可以这样做:

我想要 INT,它会自动更新以增加整数值。

这与ON UPDATE CURRENT_TIMESTAMPTIMESTAMP列上的DATETIME相似但不相同。

我在文档中读到了ON UPDATE无法使用的内容,因为我只能使用文字值,除非该列是TIMESTAMP

MySQL default and on update

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;

1 个答案:

答案 0 :(得分:0)

根据docs

在UPDATE中添加一个到special_col
UPDATE myTable SET stuff = 'new info', special_col=special_col+1;