我有一个问题,我必须在我的数据库表中插入并使用 id 更新另一个表,插入提供给我。我试过这个:
UPDATE events SET mail_key = (
INSERT INTO mail_keys
SELECT (name) FROM events)
RETURNING id);
但它不起作用。错误是:
ERROR: Syntax Error at »INTO«
LINE 2: INSERT INTO mail_keys
它有点简化,因为我没有选择名称,而是名称的规范化版本,这不会在这里产生问题。
有人有想法吗?此语句将在更多表(俱乐部、人员等)上重复,因此我有几个表的唯一键。下一个问题是,如果 event.name 在事件中不是唯一的,如何确保没有创建双 mail_keys。我在 mail_keys 中有一个独特的约束。
编辑(有关更多信息): mail_key 表如下所示:
CREATE TABLE sailbook.mail_keys (
id serial,
mail_key character varying(127),
CONSTRAINT mail_key_pk PRIMARY KEY (id),
CONSTRAINT unique_mail_key UNIQUE(mail_key)
);
我想要做的是:我有一个包含事件名称的表,例如:
123 - Hurricane
242 - Street Art
363 - The Party 2012
像这样的俱乐部:
896 - Town Hall Club
874 - Halo 12
846 - Francist
我想从中创建一个唯一的邮件密钥并将其存储在不同的表中(因为邮件密钥不仅对于一个活动来说应该是唯一的,而且对于俱乐部或个人来说也是如此)。邮件密钥表将如下所示:
1 - hurricane
2 - street_art
3 - the_party_2012
4 - town_hall_club
5 - halo_12
6 - francist
事件表如下所示:
123 - Hurricane - 1
242 - Street Art - 2
363 - The Party 2012 - 3
俱乐部桌子看起来像这样:
896 - Town Hall Club - 4
874 - Halo 12 - 5
846 - Francist - 6