sql里用触发器实现自动编号

sql里用触发器实现自动编号,想要在插入数据的时候,能够自动生成主键ID,这个触发器要怎么写?是SQLServer2005,但是ID号里面有英文字母,或者以0开头的字符串... sql里用触发器实现自动编号,想要在插入数据的时候,能够自动生成主键ID,这个触发器要怎么写?
是SQL Server 2005,但是ID号里面有英文字母,或者以0开头的字符串就不能用标识种子之类的,有知道写的请帮帮忙
展开
 我来答
abill425
推荐于2016-02-29 · TA获得超过1726个赞
知道小有建树答主
回答量:663
采纳率:100%
帮助的人:1105万
展开全部
不需要用触发器,为字段设置属性就可以实现,不知道你所说的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]就会依你想实现的格式自增长了。
百度网友95b6dff
2010-01-19
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
--创建序列
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecc7578
2010-01-06 · TA获得超过806个赞
知道小有建树答主
回答量:715
采纳率:0%
帮助的人:712万
展开全部
create trigger addid
on table
after insert
as
begin
alter table <name> add myid int identity
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangyanjj
2010-01-06 · TA获得超过143个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:244万
展开全部
你不一定要在触发器上做文章,你也可以用oracle数据库自带的seqence来搞啊,如果你用的是oracle的数据库,当然你也可以写自增序列的函数,通过触发器去调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fei2115958
2010-01-06 · TA获得超过119个赞
知道小有建树答主
回答量:162
采纳率:100%
帮助的人:142万
展开全部
这个不需要什么触发器,选择自动编号就可以了,不然就要给你操作的表写个UPDATE触发器......没有这样用过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式