3

我需要一些有关如何在移动设备上为用户帐户设置数据库的帮助。我有 2 个表:登录和设置。

登录

id         1
username   test
password   pass

设置

id(same key from login)  1
setting1                 0
setting2                 0
setting3                 0

我有一个注册页面,我想将用户名、密码和自动增量主 ID 插入登录表,我想将相同的登录 ID、设置 1、设置 2、设置 3 插入设置表。谁能给出一个关于如何同时将登录 ID 插入两个表的示例查询?该领域的人通常如何设置用户帐户数据库?我将使用 web-sql,但您可以使用任何 sql 驱动程序或简单的图表/文本来回答。

4

1 回答 1

4

使用 PostgreSQL 9.1 或更高版本,您可以在可写 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保存的 in 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;
于 2012-08-20T23:51:01.360 回答