在问一个问题
我现在要在三层里的一个表新增一个记录
可是这个表有个编号字段要按照WD0001,WD0002自动编号这样排序下来,现在我在一台机子新增记录,但是还没有保存,又在另一个机子上新增一条记录,问题出现了,现在有两个编号一样的,要什么办
我现在要在三层里的一个表新增一个记录
可是这个表有个编号字段要按照WD0001,WD0002自动编号这样排序下来,现在我在一台机子新增记录,但是还没有保存,又在另一个机子上新增一条记录,问题出现了,现在有两个编号一样的,要什么办
我还不懂写,你能不能帮我写一下
^^触发器名 ^^^对那个表操作
FOR Insert--此触发器在Insert时触发
AS
--你的SQL语句 go
增加一个表,保存各个表中的最大编号你根据这个表中的信息取得编号,计算后更新最大编号,这样就不会重复”没错我以前在公司实习也是这样做的
表aa:if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SaveCode]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[SaveCode]
GOCREATE TABLE [dbo].[aa] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Code] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Memo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO在表aa上创建触发器SaveCode:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[aa]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[aa]
GOCREATE TRIGGER SaveCode ON [dbo].[aa]
FOR INSERT
AS
declare @MaxCode int
declare @MCode varchar(10)
select @MaxCode=ISNull( MAX(CONVERT(int, SUBSTRING(Code, 3, LEN(Code)))),0) FROM aa
set @MaxCode=@MaxCode+1
set @MCode=convert(varchar(10),@MaxCode)
while Len(@MCode)<4
begin
set @MCode='0'+@MCode
end
update aa set Code='WD'+@MCode
where aa.id=(select id from inserted)