您好,登錄后才能下訂單哦!
在C#中,觸發器(Trigger)通常用于數據庫操作,而不是直接與C#代碼交互。觸發器是一種自動執行的數據庫對象,當對一個表執行特定操作(如INSERT、UPDATE或DELETE)時,觸發器會自動執行預定義的SQL語句。在多表聯動的情況下,觸發器可以幫助確保數據的一致性和完整性。
以下是一個簡單的示例,說明如何在C#中使用觸發器實現多表聯動:
Orders
表,另一個是OrderDetails
表。Orders
表包含訂單的基本信息,而OrderDetails
表包含每個訂單的詳細信息。這兩個表通過OrderID
字段關聯。CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATETIME
);
CREATE TABLE OrderDetails (
OrderDetailID INT PRIMARY KEY,
OrderID INT,
ProductID INT,
Quantity INT,
FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)
);
OrderDetails
表中插入一條新記錄時,自動更新Orders
表中的TotalQuantity
字段。CREATE TRIGGER UpdateTotalQuantity
ON OrderDetails
AFTER INSERT
AS
BEGIN
UPDATE Orders
SET TotalQuantity = (SELECT SUM(Quantity) FROM OrderDetails WHERE Orders.OrderID = inserted.OrderID)
WHERE Orders.OrderID = inserted.OrderID;
END;
Orders
表中的TotalQuantity
字段。using System;
using System.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = "your_connection_string";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// 插入訂單詳情
string insertOrderDetailSql = "INSERT INTO OrderDetails (OrderID, ProductID, Quantity) VALUES (@OrderID, @ProductID, @Quantity)";
using (SqlCommand command = new SqlCommand(insertOrderDetailSql, connection))
{
command.Parameters.AddWithValue("@OrderID", 1);
command.Parameters.AddWithValue("@ProductID", 101);
command.Parameters.AddWithValue("@Quantity", 2);
command.ExecuteNonQuery();
}
// 查詢訂單詳情
string selectOrderSql = "SELECT * FROM Orders WHERE OrderID = 1";
using (SqlCommand command = new SqlCommand(selectOrderSql, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"OrderID: {reader["OrderID"]}, TotalQuantity: {reader["TotalQuantity"]}");
}
}
}
}
}
}
在這個示例中,當在OrderDetails
表中插入一條新記錄時,觸發器會自動更新Orders
表中的TotalQuantity
字段。這樣,C#代碼可以直接查詢Orders
表以獲取最新的訂單總量。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。