主要思路:找出当前的Item_No,加一 —>将插入的数据保存入临时表,更新Item_No—>Select式插入
ALTER TRIGGER [dbo].[addItemList]
ON [dbo].[Te_Lista]
instead of INSERT
AS
DECLARE @NEW_INDEX int
set @NEW_INDEX = 1
SELECT TOP 1 @NEW_INDEX=Item_No + 1 FROM Te_Lista
WHERE List_No = (select top 1 List_No from inserted) ORDER BY Item_No DESC
SELECT * INTO #tmp FROM inserted
UPDATE #tmp
SET Item_No = Item_No
INSERT dbo.Te_Lista
SELECT *
FROM #tmp
DROP TABLE #tmp
go
本来也想用函数,做成一个通用的,但是 --存储过程可以(函数不可以)
我觉得这种通用的触发还是写存储过程吧,就不要像我一样,一个个愚蠢的加到每张表,存储过程以后更新
把字段名一个个写出来查询这个方法太蠢了,所以我觉得使用exec执行动态sql语句,但还是悲剧了.
实际上,在INSTEAD OF INSERT触发器只接insert 原表,sql不认定为递归,而通过exec调用插入