2017-08-23 48 views
-1

我想知道如果我能做到这一点没有触发器:的MySQL创建一个整数列自动更新来增加值

我想有一个INT其中是自动更新的递增整数值。

这与TIMESTAMPDATETIME列中的ON UPDATE CURRENT_TIMESTAMP列相似但不相同。

我在文档中读取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; 
+0

你的意思自动更新增量值?你能向我们展示一个例子吗? –

+0

[SQL自动递增日期时间]的可能重复(https://stackoverflow.com/questions/21450914/sql-auto-increment-by-datetime) –

+1

我已经添加了一个例子,并强调了几点让它明白为什么这不是一个骗局。如果你可以拿走愚蠢的旗帜,将不胜感激。 – Adam

回答