我需要一个将在多个表中插入行的函数

时间:2017-05-22 22:04:52

标签: database postgresql function triggers

的PostgreSQL

所以我在table1中插入一行,该行包含一个字段,该字段是table2中的一个字段。所以我想创建一个函数,当我在table1中插入一行时,它将在table2中插入一行。 例如: 我有两张桌子

 table1
 ....
 ....
 .... 

table2
....
....
.... 

我在table1中插入 插入table1值(" Sam"," USA"); 因此我想拥有

table1
Sam Usa
...
...
...

table2
Usa ...
...
...

那么我应该写什么功能以及触发什么?此外,如果table2中有一行有一个字段USA,则此函数不应再向USA插入一行

很抱歉,如果我将其解释为复杂的

1 个答案:

答案 0 :(得分:0)

就像@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