【发布时间】:2009-03-05 03:04:38
【问题描述】:
我在 SQL Server 2000 的表中有一个触发器,这是触发器:
ALTER Trigger [dbo].[Set_Asignado_State] ON [dbo].[Tables]
FOR INSERT AS
BEGIN
DECLARE @area varchar(1)
SELECT @area = Table_Area_ID FROM inserted
IF (@area = 'L')
BEGIN
INSERT INTO Table_History
SELECT (SELECT TOP 1 Table_Area_Id AS Table_Area_Id FROM inserted) AS Table_Area_Id,
(SELECT SUBSTRING( CAST( YEAR( GETDATE() ) AS VARCHAR), 3, 2) ) AS Table_Year,
(SELECT TOP 1 Table_Seq AS Table_Seq FROM inserted) AS Table_Seq,
(SELECT TOP 1 ID FROM Table_Status WHERE Description = 'Asignado') AS Status,
'' AS Responsible,
(SELECT TOP 1 OrigDept FROM inserted) AS User_Responsible,
GETDATE() AS [DateTime],
'None' AS Comments
FROM Tables
WHERE Tables.Table_Area_Id = (SELECT TOP 1 Table_Area_Id AS Table_Area_Id FROM inserted) AND
Tables.Table_Year = (SELECT SUBSTRING(CAST(YEAR(GETDATE()) AS VARCHAR), 3, 2) )
IF @@ERROR <> 0
BEGIN
DECLARE @errorMsg NVARCHAR(256)
SET @errorMsg = @@ERROR;
PRINT 'Error Inserting in Table_History'
END
END
END
现在,当他们在“表”中插入一条记录时,会调用触发器,但它会继续在 Table_History 上插入很多很多记录。
我和我的同龄人谈过,似乎没有任何问题! =S 有什么线索吗?难道我做错了什么?
提前致谢 =)
【问题讨论】:
-
@Hugo:也许你可以用文字解释一下它应该做什么?
-
同意,但是如果有人想跑步,我们应该能够帮助他们尽量减少可能的副作用
-
我开始跑步时尝试使用安全眼镜,但我认为这还不够 XD
标签: sql sql-server triggers