无为,请进,关于触发器的问题,我还是没解决

时间:2020-12-09 11:02:04
表TB 有字段X,ID
X    ID
A     1
A     2
A     3
......
B     1
B     2
B     3
.......
G     1
G     2
.......
当插入一条记录时,如果字段X,已经有了则ID递加1
如果字段X没有,此记录的ID为1,规则如上表

5 个解决方案

#1


写一个函数,放在默认值里:
create function getNumber()
returns int
as
return (select isnull(max(字段),0)+1 from 表)
go

你在你的表里的那个字段的默认值里写:
dbo.getNumber()
------------------------------

默认值里的dbo和()不要漏写了,函数你只要把中文的部分改成你的表名和列名就OK了

#2


写一个函数,放在默认值里:
create function getNumber()
returns int
as
return (select isnull(max(字段),0)+1 from 表)
go

你在你的表里的那个字段的默认值里写:
dbo.getNumber()
------------------------------

默认值里的dbo和()不要漏写了,函数你只要把中文的部分改成你的表名和列名就OK了

#3


CREATE TRIGGER 名 on tb
INSTEAD OF INSERT
AS
BEGIN
  INSERT tb  SELECT x,isnull((select max(id) from tb where x=tem.x),0)+1   FROM inserted tem
END

#4


select id = (select IsNull(max(ID),0) + 1 from table where X = inserted.X)

#5


pengdali(大力 V2.0) 太感谢你了!!!!!!!!!!!!!!!!!!!!!!谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢

#1


写一个函数,放在默认值里:
create function getNumber()
returns int
as
return (select isnull(max(字段),0)+1 from 表)
go

你在你的表里的那个字段的默认值里写:
dbo.getNumber()
------------------------------

默认值里的dbo和()不要漏写了,函数你只要把中文的部分改成你的表名和列名就OK了

#2


写一个函数,放在默认值里:
create function getNumber()
returns int
as
return (select isnull(max(字段),0)+1 from 表)
go

你在你的表里的那个字段的默认值里写:
dbo.getNumber()
------------------------------

默认值里的dbo和()不要漏写了,函数你只要把中文的部分改成你的表名和列名就OK了

#3


CREATE TRIGGER 名 on tb
INSTEAD OF INSERT
AS
BEGIN
  INSERT tb  SELECT x,isnull((select max(id) from tb where x=tem.x),0)+1   FROM inserted tem
END

#4


select id = (select IsNull(max(ID),0) + 1 from table where X = inserted.X)

#5


pengdali(大力 V2.0) 太感谢你了!!!!!!!!!!!!!!!!!!!!!!谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢