我试图创建的SqlCommand触发器,我得到的错误数据库触发器:“关键字‘触发’附近有语法错误”。当我在SQL Server中复制相同的查询时,它正在成功执行。以下是SQLCommand的外观。如何创建与ADO.NET
command.CommandText = "CREATE TRIGGER tr_Korisnik" + korisnik.KorisnikID + "_FakturaStavka_ForInsert " +
"on Korisnik"+korisnik.KorisnikID+"_FakturaStavka " +
"FOR INSERT " +
"AS " +
"BEGIN " +
"DECLARE @ID int " +
"DECLARE @FakturaID int " +
"DECLARE @StavkaBr int " +
"SET @ID = (SELECT DokumentID from inserted) " +
"SET @FakturaID = (SELECT FakturaID from inserted) " +
"UPDATE Korisnik"+korisnik.KorisnikID+"_Fakturi SET BrStavki = BrStavki+1 WHERE DokumentID = @FakturaID " +
"SET @StavkaBr = (SELECT Korisnik"+korisnik.KorisnikID+"_Fakturi.BrStavki FROM Korisnik"+korisnik.KorisnikID+"_Fakturi WHERE DokumentID = @FakturaID) " +
"UPDATE Korisnik"+korisnik.KorisnikID+"_FakturaStavka SET StavkaBroj = @StavkaBr WHERE DokumentID = @ID END";
command.ExecuteNonQuery();
此外,上面我有CREATE TABLE的SQLCommands,他们正常工作。
我试着用[数据库名称]之前CREATE TRIGGER,仍然一无所获。 我删除了concatinations +“korisnik.KorisnikID”,并取得干净的名字,仍然不能执行它
当更新,插入,删除等DML运行时,触发器用于自动执行。您不能使用ADO.Net API创建或执行触发器 –
请查看此链接(http://stackoverflow.com/questions/2868704/why-am-i-unable-to-create-a-trigger-使用-my-sqlcommand) –
1)这个触发器是错误的,因为它假定INSERT语句/操作只会插入一行('SET @ID =(从插入的SELECT DokumentID)')。 2)大多数情况下,创建触发器是一次性工作:它们不是在运行时创建的。相反,它们是使用SQL Server Manegement Studio创建的。 3)请解释这个触发器的目标。 –