你的写法是 SQL Server 的写法
DB2 的写法如下:
db2 => CREATE TABLE test_create_tab2 (
db2 (cont.) => id INT NOT NULL PRIMARY KEY generated always as identity,
db2 (cont.) => val VARCHAR(10)
db2 (cont.) => )
DB20000I SQL 命令成功完成。
db2 => INSERT INTO test_create_tab2(val) VALUES ('NO id')
DB20000I SQL 命令成功完成。
如果你需要设置 自动递增的 起始数值的话。
参考下面的例子。
db2 => drop TABLE test_create_tab2DB20000I SQL 命令成功完成。
db2 => CREATE TABLE test_create_tab2 (
db2 (cont.) => id INT NOT NULL PRIMARY KEY generated always as identity
db2 (cont.) => (Start With 100
db2 (cont.) => Increment by 1
db2 (cont.) => minvalue 100
db2 (cont.) => maxvalue 999999999
db2 (cont.) => no cycle cache 5 no order),
db2 (cont.) => val VARCHAR(10)
db2 (cont.) => )
DB20000I SQL 命令成功完成。
参考下面的例子。db2 =>drop TABLE test_create_tab2DB20000I SQL 命令成功完成。 db2 =>CREATE TABLE test_create_tab2 (db2 (cont.) => id INT NOT NULL PRIMARY KEY generated always as identitydb2 (cont.) => (Start With 100db2 (cont.) => Increment by 1db2 (cont.) => minvalue 100db2 (cont.) => maxvalue 999999999db2 (cont.) => no cycle cache 5 no order),db2 (cont.) => val VARCHAR(10)db2 (cont.) =>)DB20000I SQL 命令成功完成。你可运行控制中心,然后修改表,有很多限制的.对于一个已经存在的字段,以前有内容了,如果你这样改,其内容必改,这可能出问题,所以DB2不支持.
建议建立一个新的自增字段.
实验结果:
先设置整型字段然后再ALTER,结果表中无记录时成功,而有记录时失败。
那么就这么做:
create table b like a
insert into b select * from a
drop table a
create table a like b
alter table a add column id int
CALL SYSPROC.ALTOBJ ( 'APPLY_CONTINUE_ON_ERROR', 'CREATE TABLE A ( A INTEGER , ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE ), ID1 SMALLINT NOT NULL ) IN IBMDB2SAMPLEREL ', -1, ? )
INSERT INTO A(COL1,.....,COLN) SELECT * FROM B不包括A的新增自增列,就将数据导回并且ID列也自动有了值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)