PostgreSQL如何在插入时即插入主表,也插入子表
时间: 2024-01-01 07:19:42 浏览: 45
在 PostgreSQL 中,可以使用触发器来实现在插入主表时同时插入子表的操作。具体步骤如下:
1. 创建主表和子表,并且确保主表和子表之间有外键关联。
2. 创建一个在主表插入时触发的函数。
3. 在该函数中插入主表数据,并获取主表的 ID 值。
4. 使用主表的 ID 值插入子表数据。
以下是一个简单的例子:
创建主表和子表:
```
CREATE TABLE main_table (
id SERIAL PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE child_table (
id SERIAL PRIMARY KEY,
main_table_id INTEGER REFERENCES main_table(id),
child_name VARCHAR(50)
);
```
创建触发器函数:
```
CREATE OR REPLACE FUNCTION insert_main_table_and_child_table()
RETURNS TRIGGER AS $$
DECLARE
main_table_id INTEGER;
BEGIN
INSERT INTO main_table (name) VALUES (NEW.name) RETURNING id INTO main_table_id;
INSERT INTO child_table (main_table_id, child_name) VALUES (main_table_id, NEW.child_name);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
```
创建触发器:
```
CREATE TRIGGER insert_main_and_child
AFTER INSERT ON main_table
FOR EACH ROW
EXECUTE FUNCTION insert_main_table_and_child_table();
```
现在,当您向主表中插入数据时,将自动插入子表数据。