如果这很重要,我正在使用 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] 删除。
我来说两句