在 SQL 中链接多个查询

巴德海

如果这很重要,我正在使用 postgresql。

创建新用户时,我需要写入 2 个不同的表,并且我想确保两个查询都失败或都成功。如果其中一个失败,另一个不应该成功。

假设我有一个名为 users 的表和另一个名为 house 的表,每当创建用户时,我都会给他们一个房子。

user table:
userid(int,auto generated) , username(text), password(text)


houses table:
userid(int) , houseid(int)

创建新用户时,我应该调用以下代码:

INSERT INTO users (username , password ) VALUES ('a value', 'a value') RETURNING userid;

INSERT INTO houses (userid, houseid ) VALUES ('returned_value' , 'a value');

但是如果第一个查询成功而第二个查询由于任何原因失败,这意味着这将创建一个没有家的用户。如何将这 2 个查询链接在一起,以便它们都成功或都失败。

克里斯托夫

事务是您在这里管理您想要做的事情的方式,我的意思是只有一个全局提交。
使用 postgresql,管理事务的语法如下:

BEGIN;
INSERT INTO users (username , password ) VALUES ('a value', 'a value') RETURNING userid;
INSERT INTO houses (userid, houseid ) VALUES ('returned_value' , 'a value');
COMMIT;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章