以sqlserver为例,可用如下语句设置:
create table test(id int identity(1,1),primary key(id),
name varchar(10))
其中identity(1, 1)为设置主键自增的部分,前边一个1表示从1开始计数,后边一个1表示每次增加的数量。primary key(id)代表id列为主键。
连续执行如下语句:
insert into test(name) values ('a')insert into test(name) values ('b')
insert into test(name) values ('b')
如图可见,id列达到了自增的目的。
保证程序的正确性,主键ID首先具有唯一性,设置自动增长在前台Insert的时候不需要传入ID的值,数据库自动根据最后一个ID值增加1 保证数据库主键不重复而且调用更为高效。
假如说没有设置自动增长 在insert一条记录的时候需要人为传递ID值。要保证唯一性必须要先获得上条记录的ID用select 然后再加一 然后在执行insert 从效率方面降低程序的灵活性。
个人见解。
建立一个序列啊,每次从序列中取值,提醒一下插入值的时候不要插入主键,用一个触发器自动插入主键的值,给你我的一个案例
CREATE OR REPLACE TRIGGER CRC_028_INOUT_SUMMARY_T(触发器名)
BEFORE INSERT ON CRC_028_INOUT_SUMMARY(表名称)
FOR EACH ROW
DECLARE
L_SUMMARY_ID NUMBER := 0;
BEGIN
-- CRC_028_INOUT_SUMMARY_S 是序列名
SELECT CRC_028_INOUT_SUMMARY_SNEXTVAL INTO L_SUMMARY_ID FROM DUAL;
:NEWSUMMARY_ID := L_SUMMARY_ID;
END;
好好看看,可以参考我的博客:>
保证程序的正确性,主键ID首先具有唯一性,设置自动增长在前台Insert的时候不需要传入ID的值,数据库自动根据最后一个ID值增加1保证数据库主键不重复而且调用更为高效。
假如说没有设置自动增长在insert一条记录的时候需要人为传递ID值。要保证唯一性必须要先获得上条记录的ID用select然后再加一然后在执行insert从效率方面降低程序的灵活性。
个人见解。
以上就是关于怎么设置主键自增全部的内容,包括:怎么设置主键自增、数据库设置主键的时候用,为什么设置自动增长、怎么让oracle数据库的主键自增等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)