c# - 如何使用 ADO.NET 创建数据库触发器

标签 c# sql-server ado.net database-trigger sqlcommand

我尝试使用 SqlCommand 创建触发器,但收到错误:

Incorrect syntax near the keyword 'trigger'

当我在 SQL Server 中复制相同的查询时,它成功执行。
这是 SQL 命令的样子。

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之前尝试了USE [databasename],但仍然没有任何结果。 我删除了连接 +"korisnik.KorisnikID" 并创建了干净的名称,但仍然无法执行它。

最佳答案

documentation for ExecuteNonQuery指出

You can use the ExecuteNonQuery to perform catalog operations (for example, querying the structure of a database or creating database objects such as tables), or to change the data in a database without using a DataSet by executing UPDATE, INSERT, or DELETE statements.

这证实了我的怀疑:你不能用这种方式创建触发器。

如果您想在代码中创建触发器,请使用 CLR Trigger .

关于c# - 如何使用 ADO.NET 创建数据库触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095332/

相关文章:

sql - PL/SQL 过程 : How return a select statement?

c# - 如何将 XmlElementAttribute 用于 List<T>?

sql - 按 SQL Server 中总数的百分比分组

sql-server - 查询其根是SQL Server中对象数组的Json

sql 包含查询不返回已知答案

ado.net - 如何使用 ADO.NET 读取 .XLSX (Excel 2007) 文件?我发现 "Could not find installable ISAM"-错误

c# - 如何在使用 C# 和 LeanPlum 的应用程序中禁用推送通知?

c# - 无法将运行添加到 foreach 循环中的文本 block

C# 遍历按值排序的字典

c# - SqlCommand 还是 SqlDataAdapter?