这个触发器怎么没有触发???(30分)

  • 主题发起人 主题发起人 apolloone
  • 开始时间 开始时间
A

apolloone

Unregistered / Unconfirmed
GUEST, unregistred user!
插入触发器在"用户表"有数据增加时,给末对"代号"赋值的记录赋值,其值是
现有记录中"代号"的最大值加1("代号"为字符串类型):
CREATE TRIGGER Add_No
ON 用户表
FOR INSERT
AS
DECLARE @tmpl int
SELECT @tmpl=MAX(CONVERT(int,代号)) FROM 用户表
SELECT @tmpl=@tmpl+1
DECLARE @tmpstr char(2)
SELECT @tmpstr=CONVERT(varchar(2),@tmpl)
UPDATE 用户表
SET 代号=@tmpstr WHERE 代号=NULL

语法没有错误,但是我在利用DBGrid增加记录的时候,字段"代号"的值仍为"NULL"呀???
 
CREATE TRIGGER Add_No
ON 用户表
FOR INSERT
AS
DECLARE @tmpl int
SELECT @tmpl=MAX(CONVERT(int,代号)) FROM inserted
SELECT @tmpl=@tmpl+1
DECLARE @tmpstr char(2)
SELECT @tmpstr=CONVERT(varchar(2),@tmpl)
UPDATE inserted
SET 代号=@tmpstr WHERE 代号=NULL
 
请教:hjw007
按你的方法(将表名用"inserted"表示),在建立触发器的时候就报错:
"The logical tables INSERTED and DELETED cannot be updated."

帮帮忙,谢谢!
 
--选取最大编号
SELECT @SUBID=MAX(ISNULL( TABLESUBKIND.SUBKIND,-1)+1)
FROM TABLESUBKIND,INSERTED
WHERE TABLESUBKIND.MAINKIND=INSERTED.MAINKIND

--此触发器用来自增内部编号
UPDATE TABLESUBKIND
SET
SUBKIND=@SUBID
WHERE SUBKIND IS NULL
 

Similar threads

D
回复
0
查看
753
DelphiTeacher的专栏
D
D
回复
0
查看
659
DelphiTeacher的专栏
D
D
回复
0
查看
653
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部