如何在Liquibase中执行第二次插入时引用自动递增的id?

ete*_*arp 6 sql database postgresql liquibase

我目前正在玩Liquibase并为用户创建了一个表,并为角色创建了一个表.每个用户都有一个唯一的id,当插入用户时,该ID是自动生成的(通过自动增量序列).然后,角色表中的角色将引用此ID.

现在我尝试使用Liquibase插入默认用户.首先我插入用户,然后我想插入一个引用这个新创建的用户的角色.

问题是我无法在Liquibase中找到一种方法来检索为新用户生成的id,以便在插入新角色时可以使用它.

这可能吗?如果是,应该怎么做?

想要做以下事情:

<insert tableName="xxx_user">
    <!-- Id is auto incremented -->
    <column name="user_name" value="XXX" />
    <column name="password" value="XXX" />
    <column name="first_name" value="XXX" />
    <column name="last_name" value="XXX" />
</insert>

<insert tableName="user_role">
    <column name="user_id" value="<point at the auto generated id in previous insert>" />
    <column name="role" value="A_ROLE" />
</insert>
Run Code Online (Sandbox Code Playgroud)

Jua*_*mez 8

我使用 MySQL 数据库。这不是一个优雅的解决方案,但有效......

    <column name="user_id" valueComputed="(SELECT MAX(id) FROM xxx_user)"/>
Run Code Online (Sandbox Code Playgroud)

  • 我认为这里的反对票是不应该的。这是迄今为止我发现的唯一一种检索 ID 的成功方法。正如作者所指出的,这不是一个优雅的解决方案,但它确实弥补了查找自动生成 ID 的差距。 (3认同)