我需要一些关于如何在移动设备上为用户帐户设置数据库的帮助。我有2个表:登录和设置。
登录
id 1
username test
password pass
设置
id(same key from login) 1
setting1 0
setting2 0
setting3 0
我有一个注册页面,我想在登录表中插入用户名,密码和自动增量主ID,我想插入相同的登录ID,setting1,setting2,setting3进入设置表。任何人都可以提供一个示例查询,如何同时将登录ID插入两个表?该领域的人员通常如何设置用户帐户数据库?我将使用web-sql,但您可以使用任何sql驱动程序或只是简单的图表/文本来回答。
答案 0 :(得分:4)
使用PostgreSQL 9.1或更高版本,您可以chain data-modifying statements together in a writeable CTE
WITH x AS (
INSERT INTO login(id, username, password)
VALUES (1, 'test', 'pass')
RETURNING id
)
INSERT INTO settings(id, setting1, setting2, setting3)
SELECT x.id,0,0,0
FROM x;
这两个陈述是在同一时间执行的 - 或者说它是精确的。
此外,此构造使用id
中保存的实际 login
,如果触发器或规则否决了输入,则可能与您提交的内容不同。它还可以用于串行主键(这是一种非常常见的用例),可以在多个表中插入新行,而无需事先知道新的id。所以,没有额外的往返服务器。
如果您的表login
已定义:
CREATE TEMP TABLE login(id serial, username text, password text);
这样可行:
WITH x AS (
INSERT INTO login(username, password)
VALUES ('test', 'pass')
RETURNING id
)
INSERT INTO settings(id, setting1, setting2, setting3)
SELECT x.id,0,0,0
FROM x;