MySQL Auto_Increment属性应用
CREATE TABLE test ( id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, username VARCHAR(15) NOT NULL )AUTO_INCREMENT = 100;
可在建表时可用“AUTO_INCREMENT=n”选项来指定一个自增的初始值。
可用alter table table_name AUTO_INCREMENT=n命令来重设自增的起始值。
说明:
(1)如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。
(2)把0插入AUTO_INCREMENT数据列的效果与插入NULL值一样。但不建议这样做,还是以插入NULL值为好。
(3)当插入记录时,没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。
(4)当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,可以跳过一些编号。
(5)如果用UPDATE命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号从该值开始递增。
例如,将t_user的字段ID设置为自增:(用序列sequence的方法来实现)
----创建表 Create table t_user( Id number(6),userid varchar2(20),loginpassword varchar2(20),isdisable number(6) ); ----创建序列 create sequence user_seq increment by 1 start with 1 nomaxvalue nominvalue nocache ----创建触发器 create or replace trigger tr_user before insert on t_user for each row begin select user_seq.nextval into :new.id from dual; end; ----测试 insert into t_user(userid,loginpassword, isdisable) values(‘ffll‘,‘liudddyujj‘, 0); insert into t_user(userid,loginpassword, isdisable) values(‘dddd‘,‘zhang‘, 0) select * from t_user;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。