2011-10-29 31 views
0

我想創建一個觸發器,以便在第一個表格中插入一些值而不是第二個表格的兩個字段自動更新。 情況是,我有具有兩個字段如何在sql server 2008r2中插入觸發器之後關聯兩個表格

第二表

userId | password一個表,其中我存儲用戶細節

第一表

1st name | last name | userId | password | adress | email

和第二登錄表

現在我想如果我更改密碼的值在第1表格會自動反映在第二個表格中。

+0

你有第一個表中的數據。你爲什麼要複製它? –

+0

只是爲了學習目的 –

回答

0

你可以像這樣....

CREATE TRIGGER trgTest ON Test 
    FOR INSERT 
    AS 
    INSERT Test2 
    (Id, value) 
    SELECT Id, Value 
    FROM Inserted 

,或者如果你是使用存儲過程,你可以輕鬆地管理這個

CREATE PROCEDURE sp_Insert 
@Value varchar(10) 
AS 
insert into table1 (...,...) values (@value,...) 
insert into table2 (...,...) values (@value,...) 
+0

Thankyou 您的觸發器聲明適用於我 –

+0

我也想知道當我們更新您的測試表時,是否再次需要相同的過程,而不是它也反映在Test2表中 –

1

只要第二個表中的用戶名和密碼被映射爲外鍵第一個表,我想你應該能夠設置「上的級聯更新」的行

+0

如果你不真的需要使用觸發器,我可能會採用這種方法。我不知道哪種方式更好,但肯定會看起來更清晰。 – Carth

0

你大多回答你自己的問題,普拉卡什。查看MSDN documentation on triggers以獲取您需要的特定語法。 Jon對數據重複的評論指出,你的模式有點不規範,所以你可能想要改變它,除非它是你的情況所必需的。

從MSDN

INSERT INTO auditEmployeeData 
    (audit_log_type, 
    audit_emp_id, 
    audit_emp_bankAccountNumber, 
    audit_emp_salary, 
    audit_emp_SSN) 
    SELECT 'NEW', 
     ins.emp_id, 
     ins.emp_bankAccountNumber, 
     ins.emp_salary, 
     ins.emp_SSN 
    FROM inserted ins 
+0

我發現這個CREATE TRIGGER XYZ ON dbo.UDetail 插入 後作爲 插入dbo.login(用戶名,密碼,角色) 值(new.UserId,new.Pwd, '用戶');但我不知道爲什麼這個新的使用,我得到錯誤:多部分標識符new.userId和new.pwd沒有找到 –

+0

對於MSSQL,應該'插入'不'新'。我認爲你發現的例子可能被插入爲新的。用一個例子編輯帖子。 – Carth

相關問題