我应该编写什么函数和触发器,以便当我在
table1
中插入一行时,然后在 table2
中插入新行?table2
中已经存在具有相同字段/值的行,则该函数不得在
table2
中插入行
示例:
我有两张桌子:
table1
和table2
table1
执行 3 次单独的插入:("Sam","USA"), ("Jean", "USA"), ("Kath", "Canada")| table1 | |
|--------|---------|
| name | country |
| Sam | USA |
| Jean | USA |
| Kath | Canada |
and
| table2 |
|---------|
| country |
| USA |
| Canada |
就像@Jorge Campos 在评论中提到的那样,重复数据通常是个坏主意。
但是,如果您确实遇到需要执行此操作的情况,则需要在源表上创建触发器,并使用现有检查将数据插入目标表中。这是 SQL Server 中的示例:
CREATE TABLE Tbl1(
Id INT NOT NULL IDENTITY PRIMARY KEY,
Name NVARCHAR(100) NOT NULL
)
GO
CREATE TABLE Tbl2(
Id INT NOT NULL IDENTITY PRIMARY KEY,
Name NVARCHAR(100) NOT NULL
)
GO
CREATE TRIGGER Sync ON Tbl1 AFTER INSERT AS
INSERT INTO Tbl2 (Name)
SELECT src.Name FROM inserted src
LEFT JOIN Tbl2 dst ON src.Name = dst.Name
WHERE dst.Id IS NULL
GO
INSERT INTO Tbl1 (Name) VALUES ('STR')
SELECT * FROM Tbl2