1.informix中自动增长列:
create temp table aaa_tmp
(id serial,
idno char(18)
)
;
insert into aaa_tmp
select 0,dddd
from dddd_tmp
;
2.Teradata中自动增长列:
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多运行几次你将会发现这个错误。