如何使用MySQL触发器的下一个值?

时间:2017-12-07 13:19:17

标签: mysql database triggers db2

我在MySQL中使用以下查询创建了一个示例表。

create table table_1 (
  arg1 bigint not null unique,
  arg2 bigint not null default 0,
  arg3 bigint not null default 0,
  agr4 bigint not null default 0,
  arg5 bigint not null default 0,
  constraint shdk_test foreign key(arg1) references arg1(id) 
  on delete cascade on update restrict
);

现在我尝试使用以下命令运行触发器

   insert into table_1(arg1, arg2, arg3, agr4, arg5) values(new.id, 
   (next value for revision), (next value for revision), (next value for revision), (next value for revision));

运行此触发器后,我在next value for revision上收到错误消息。我想知道next value for是否支持MySQL?它支持DB2或MySQL的任何替代方案?请帮忙。

1 个答案:

答案 0 :(得分:-1)

NEXT VALUE FOR和NEXTVAL分别是Transact-SQL和Oracle的SQL变体命令。其他SQL数据库,包括MySQL,不支持它。

深入研究Stack Exchange DBA我遇到过这篇文章: https://dba.stackexchange.com/questions/19019/mysql-get-next-unique-value-without-auto-increment/19020#19020

或者您可以在create table之后使用类似于此的插入:

20 20
204 224
212 436
final result: 0

并对其他arg列执行相同操作。一个过程可以使这更自动,你可以在插入行时调用它。