很多时候在做和
数据库相关的操作的时候,主键不能由用户去填写或涉及多个用户同时操作一张表的时候,就需要对主键进行严格的控制,这里主要讲
Oracle中如何实现主键的自增长。 www.2cto.com
主要由三步组成,1)建表;2)建立序列;3)建立触发器(目的是在表插入数据的时候启用序列生成的值),我们通过下面的例子来说明:
1)建立对应的数据库表:
drop table TEST;
create table TEST
(
bsm NUMBER(10) not null,
xh NUMBER(10),
posx NUMBER(15,5),
posy NUMBER(15,5)
);
alter table TEST add constraint PK_TEST primary key (BSM);
2)建立序列
drop sequence TEST_SEQ;
create sequence TEST_SEQ
minvalue 1
maxvalue 999999999999999999
start with 1
increment by 1
cache 20;
注:建立序列,最小值为1,从1开始计数和每次递增量为1;
3)建立触发器 www.2cto.com
drop trigger test_trig;
CREATE OR REPLACE TRIGGER "test_trig"
BEFORE INSERT ON test
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
SELECT TEST_SEQ.NEXTVAL INTO :NEW.BSM FROM DUAL;
END test_trig;
通过上述三步就完成了主键自动生成的设定,以后就可以根据业务需求直接插入业务数据就可以了
二:SQLSERVER中实现主键的默认自增长:
通过 IDENTITY 来设置,参数有2个,一个是“初始值” 一个是“增量”。
默认情况下 INSERT 语句中,不能对 IDENTITY 的字段进行赋值。
CREATE TABLE test_create_tab2 (
id INT IDENTITY(1, 1) PRIMARY KEY,
val VARCHAR(10));