嗨預先感謝您的任何幫助, 我有這個觸發器在我的SQL Server 2012數據庫SQL Server 2012的觸發
USE Teste_TextMining
CREATE TRIGGER Noticia07032016 ON dbo.textos
AFTER INSERT
AS
DECLARE @ID INT
SET @ID = ( SELECT MAX(ID_texto) FROM dbo.textos)
DECLARE @tag NVARCHAR(MAX)
SET @tag = ( SELECT TOP 1 keyphrase
FROM semantickeyphrasetable(textos, *)
WHERE [email protected])
BEGIN
UPDATE dbo.textos
SET tag = UPPER(@tag)
WHERE ID_texto = @ID
END
BEGIN
UPDATE dbo.textos
SET data = GETDATE()
WHERE ID_texto = @ID
END
GO
正如你可以看到它應該更新2個值的「標籤」行和「數據」行,一旦某個東西被插入表中,但它只更新「數據」行。
如果我只是選擇這段代碼並運行/調試它,它實際上更新兩行,任何想法爲什麼這是hapening?
DECLARE @ID INT
SET @ID = ( SELECT MAX(ID_texto) FROM dbo.textos)
DECLARE @tag NVARCHAR(MAX)
SET @tag = ( SELECT TOP 1 keyphrase
FROM semantickeyphrasetable(textos, *)
WHERE [email protected])
BEGIN
UPDATE dbo.textos
SET tag = UPPER(@tag)
WHERE ID_texto = @ID
END
BEGIN
UPDATE dbo.textos
SET data = GETDATE()
WHERE ID_texto = @ID
END
再次感謝您的幫助和時間。
插入後,您正在使用觸發器更新觸發器所在的同一張表。我會用Default約束和/或計算列代替它。 –
我同意@TabAlleman在這裏。你的觸發邏輯在這裏也完全被打破了。如果你插入多於一行的話,你的邏輯如果不能正常工作的話。你應該避免標量變量,你也應該在觸發器中引用插入和/或刪除的表。 –