我創建了一個名爲ProductsAudit的表,它用於在觸發器更新後從MyGuitarShop產品表中保存值,但似乎無法獲得它工作。我在SQL Server中這樣做。將更新前的值放入帶觸發器的另一個表中
所以我需要發生的是產品更新時,它將舊值存儲到ProductsAudit表中。
CREATE TABLE ProductsAudit
(
AuditID int NOT NULL,
CategoryID int,
ProductCode varchar(10) NOT NULL,
ProductName varchar(255) NOT NULL,
ListPrice money NOT NULL,
DiscountPercent money NOT NULL,
DateUpdated datetime
PRIMARY KEY (AuditID)
FOREIGN KEY (CategoryID) REFERENCES Categories(CategoryID)
)
CREATE TRIGGER Products_UPDATE2
ON Products
AFTER UPDATE
AS
BEGIN;
ROLLBACK TRAN
INSERT INTO ProductsAudit
SELECT CategoryID, ProductCode, ProductName, ListPrice, DiscountPercent
FROM Deleted
WHERE CategoryID = (SELECT CategoryID FROM Inserted);
PRINT 'Old data sent to ProductsAudit'
END;
UPDATE Products
SET ListPrice = 79.43
WHERE ProductID = 3;
你的表有7列,但你的'SELECT'只有5個字段。 在你的CREATE TABLE腳本中,AuditID是一個PRIMARY KEY,但它不是'IDENTITY'。意思是,如果你想在表中插入一條記錄,你必須指定一個「AuditID」。 此外,你沒有選擇任何'DateUpdated'。也許你希望這有一個默認的'GETDATE()'? – Santi