【问题标题】:Insert into two tables with Auto_inc foreign key MS SQL使用 Auto_inc 外键 MS SQL 插入两个表
【发布时间】:2020-08-05 07:49:04
【问题描述】:

这可能比我想象的要容易,但我无法想象解决方案。

我有两个表,我想用 PHP 向其中插入数据。

Table1: ListID IDENTITY PK
        User
        date

Table2: ListID PK FK
        item   PK
        number

如何在一个事务中执行此操作,将 IDENTITY ID 从表 1 获取到表 2?在 MS SQL 中。

【问题讨论】:

  • 既然你标记了你的问题 sql-server,你的意思是 identity 而不是 auto_increment
  • 是的。我的意思是身份。对mysql比较熟悉所以有错别字。

标签: sql sql-server database sql-insert auto-increment


【解决方案1】:

一种选择是使用@@IDENTITYSCOPE_IDENTITY() 来检索最后插入的行的ID。

begin transaction;
insert into table1(user, date) values(@user, @date);
insert into table2(listid, item, number) values(@@identity, @item, @number);
commit;

【讨论】:

    【解决方案2】:

    首选 SCOPE_IDENTITY() 而不是 @@identity。 你永远不会知道你是否有一些副作用(例如触发器)在你的会话中创建另一个身份值。

    【讨论】:

    • 事务不会锁定表吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多