這應該做的工作。
表和視圖定義。
CREATE TABLE Customer
(ID int,
FName varchar(200),
SName varchar(200),
RoleID int);
CREATE TABLE CustomerRole
(RID int,
Name varchar(100));
CREATE VIEW ViewCustomer AS
SELECT *
FROM Customer JOIN CustomerRole on RoleID = RID;
觸發器定義。
CREATE TRIGGER ViewCustomerTrigger ON ViewCustomer
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON
UPDATE Customer
SET FName = I.FName,
SName = CASE I.FName WHEN 'Peter' THEN 'Smith' ELSE I.SName END,
RoleID = I.RoleID
FROM INSERTED I JOIN Customer C ON I.ID = C.ID
UPDATE CustomerRole
SET Name = I.Name
FROM INSERTED I JOIN CustomerRole R ON I.RID = R.RID
END
GO
的樣本數據
INSERT INTO Customer (ID, FName, SName, RoleID)
VALUES (1, 'John', 'Wayne', 1);
INSERT INTO Customer (ID, FName, SName, RoleID)
VALUES (2, 'Jack', 'Jackson', 1);
INSERT INTO CustomerRole (RID, Name)
VALUES (1, 'Manager');
此更新將導致觸發更新SNAME爲 '史密斯'
UPDATE ViewCustomer
SET FName = 'Peter'
WHERE ID = 1
Here是它的一個SQLFiddle。
你到目前爲止嘗試過什麼,你有什麼具體問題?你有沒有讀過關於在視圖上創建觸發器的[文檔說明](http://msdn.microsoft.com/zh-cn/library/ms189799(v=sql.100).aspx)? – Pondlife
嗨Pondlife,我用我試過的代碼更新了我的問題,但它顯示一個錯誤,說它可以找到我的視圖'ViewCustomer'。 「對象'ViewCustomer'不存在或對此操作無效。」 – Annoscia
你能告訴我們View'ViewCustomer'嗎? – Parado