
sql里用触发器实现自动编号
sql里用触发器实现自动编号,想要在插入数据的时候,能够自动生成主键ID,这个触发器要怎么写?是SQLServer2005,但是ID号里面有英文字母,或者以0开头的字符串...
sql里用触发器实现自动编号,想要在插入数据的时候,能够自动生成主键ID,这个触发器要怎么写?
是SQL Server 2005,但是ID号里面有英文字母,或者以0开头的字符串就不能用标识种子之类的,有知道写的请帮帮忙 展开
是SQL Server 2005,但是ID号里面有英文字母,或者以0开头的字符串就不能用标识种子之类的,有知道写的请帮帮忙 展开
5个回答
展开全部
不需要用触发器,为字段设置属性就可以实现,不知道你所说的sql是不是指MS SqlServer,是的话,给字段设置为bigint类型,然后把它的“标识列”属性设置为真就可以了。
access的话,直接类型选为“自动编号”就可以了。
-----------------------------
那么你可以这样,比如:
表名为tab,你想要的列为bm(字符型),希望的格式是[A*******]。
那么给它加一个标识列id做为主键,再建立下面的触发器
CREATE TRIGGER [tab_tri1] ON [tab]
FOR INSERT
AS
update [tab] set [bm]='A'+right('0000000'+cast([id] as varchar(10)),7) where id in (select id from inserted)
注意:你的bm列要设置为可以为空。
这样,列[bm]就会依你想实现的格式自增长了。
access的话,直接类型选为“自动编号”就可以了。
-----------------------------
那么你可以这样,比如:
表名为tab,你想要的列为bm(字符型),希望的格式是[A*******]。
那么给它加一个标识列id做为主键,再建立下面的触发器
CREATE TRIGGER [tab_tri1] ON [tab]
FOR INSERT
AS
update [tab] set [bm]='A'+right('0000000'+cast([id] as varchar(10)),7) where id in (select id from inserted)
注意:你的bm列要设置为可以为空。
这样,列[bm]就会依你想实现的格式自增长了。
展开全部
--创建序列
create sequence auto_id_seq
start with 7
increment by 1;
--创建触发器
CREATE OR REPLACE TRIGGER ID_AUTOGEN_TRG
BEFORE INSERT OR UPDATE OF ID
ON ProWage
FOR EACH ROW
BEGIN
IF INSERTING THEN
SELECT auto_id_seq.NEXTVAL INTO :NEW.ID FROM DUAL;
ELSE
RAISE_APPLICATION_ERROR(-20020, '不允许更新ID值!');
END IF;
END;
create sequence auto_id_seq
start with 7
increment by 1;
--创建触发器
CREATE OR REPLACE TRIGGER ID_AUTOGEN_TRG
BEFORE INSERT OR UPDATE OF ID
ON ProWage
FOR EACH ROW
BEGIN
IF INSERTING THEN
SELECT auto_id_seq.NEXTVAL INTO :NEW.ID FROM DUAL;
ELSE
RAISE_APPLICATION_ERROR(-20020, '不允许更新ID值!');
END IF;
END;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create trigger addid
on table
after insert
as
begin
alter table <name> add myid int identity
end
on table
after insert
as
begin
alter table <name> add myid int identity
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你不一定要在触发器上做文章,你也可以用oracle数据库自带的seqence来搞啊,如果你用的是oracle的数据库,当然你也可以写自增序列的函数,通过触发器去调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个不需要什么触发器,选择自动编号就可以了,不然就要给你操作的表写个UPDATE触发器......没有这样用过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询