Mat*_*att 34 db2 auto-increment
我认为这很简单,但我似乎无法在我的db2数据库中使用AUTO_INCREMENT.我做了一些搜索,人们似乎正在使用"默认生成",但这对我不起作用.
如果它有帮助,这里是我想要创建的表,其中sid是自动递增的.
create table student(
sid integer NOT NULL <auto increment?>
sname varchar(30),
PRIMARY KEY (sid)
);
Run Code Online (Sandbox Code Playgroud)
任何指针都表示赞赏.
Ian*_*vde 56
你正在寻找被称为IDENTITY列:
create table student (
sid integer not null GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1)
,sname varchar(30)
,PRIMARY KEY (sid)
);
Run Code Online (Sandbox Code Playgroud)
序列是执行此操作的另一个选项,但您需要确定哪个适合您的特定情况.阅读本文以获取更多信息,比较序列与标识列.
您必须使用序列对象创建自动增量字段(此对象生成数字序列).
使用以下CREATE SEQUENCE语法:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
Run Code Online (Sandbox Code Playgroud)
上面的代码创建了一个名为seq_person的序列对象,它以1开头并将递增1.它还将缓存最多10个性能值.cache选项指定将在内存中存储多少个序列值以便更快地访问.
要在"Persons"表中插入新记录,我们必须使用nextval函数(此函数从seq_person序列中检索下一个值):
INSERT INTO Persons (P_Id,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
Run Code Online (Sandbox Code Playgroud)
上面的SQL语句会在"Persons"表中插入一条新记录.将从seq_person序列中为"P_Id"列分配下一个数字."FirstName"列将设置为"Lars","LastName"列将设置为"Monsen".