本文共 1013 字,大约阅读时间需要 3 分钟。
Teradata 中也可以定义自动增长列,语法如下:
CREATE TABLE test ( ID INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 100 INCREMENT BY 1 ), CID INTEGER, PID INTEGER) 我们用show table test来查看,则可以发现它的定义,系统自动设置了一些条件。 CREATE SET TABLE test ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT ( ID INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 100 INCREMENT BY 1 MINVALUE -2147483647 MAXVALUE 2147483647 NO CYCLE), CID INTEGER, PID INTEGER) PRIMARY INDEX ( ID ); 如上定义中,有两种方法定义IDENTITY 类型,他们的区别如下 ID INTEGER GENERATED BY DEFAULT AS IDENTITY ID INTEGER GENERATED ALWAYS AS IDENTITY 运行以下的SQL: 1. insert into test(CID,PID) values(1,1) 2. insert into test(ID,CID,PID) values(1,1,1) 3. insert into test(ID,CID,PID) values(110,1,1) BY DEFAULT : 运行成功,结果如下,可以插入指定的数值在列中 1 1 1 100 1 1 110 1 1 ALWAYS : 运行成功,结果如下,指定的数值会被忽略,转换为自动增长数值 100 1 1 101 1 1 102 1 1 注意 :在BY DEFAULT方式中,因为系统中保存有自动增长数值,如插入的数值110大于定义的100,则迟早IDENTITY会增长到这个数值,那时候就会发生 IDENTITY DUPLICATE冲突,而ALWAYS则不会有这个问题。将SQL 1多运行几次你将会发现这个错误。版权声明:本文为博主原创文章,未经博主允许不得转载