我正在创建一个以uuids为主键的sql文件。以下是我的创建表定义如何使用pgcrypto扩展
CREATE EXTENSION pgcrypto;
CREATE TABLE snw.contacts(
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT,
email TEXT
);
现在我使用
在此表中添加记录INSERT INTO snw.contacts (name,email) VALUES('Dr Nic Williams','drnic');
postgres=# select * from snw.contacts;
id | name | email
--------------------------------------+-----------------+-------
7c627ee0-ac94-40ee-b39d-071299a55c13 | Dr Nic Williams | drnic
现在在同一个文件中继续我要在一个看起来像
的表中插入一行CREATE TABLE snw.address(
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
street TEXT
contact UUID
);
其中,联系人UUID是指snw.contacts表中的ID。如何获取在第一个插入中生成的uuid并在snw.address表中的另一个插入中使用它?类似于:
INSERT INTO snw.address(street,contact) values('ABC', (select id from snw.contacts where email='drnic'));
我可以使用where子句我使用此脚本生成一些测试数据,因此我知道该电子邮件将用于获取ID。
答案 0 :(得分:1)
with new_contact as (
INSERT INTO snw.contacts (name,email)
VALUES('Dr Nic Williams','drnic')
returning id
)
INSERT INTO snw.address(street,contact)
select 'ABC', id
from new_contact;