【问题标题】:Inserting one table's primary key into another table将一个表的主键插入另一个表
【发布时间】:2013-11-07 14:34:52
【问题描述】:

我在 SQL Server 中有两个表,AppointmentAppointmentDetails

Appointment 表有两列 AppIdCusId

AppointmentDetail 表有AppIdApDayIntimeOutTimeEmpId

Appointment 表以AppId 作为其主键,并设置为自动递增。 AppointmentDetails 表在 (AppId, ApDay) 上有主键。

当我将数据插入Appointment 表时,我的问题是如何获取Appointment 表的主键并将其插入AppointmentDetails 表???

【问题讨论】:

  • 一些 cmets - 约会中有一个“t”。表不能有两个主键 - 但是它们可以有一个包含两列的主键。
  • 我已经在下面给了你一个答案,但实际上最好要求澄清你是如何插入等的。包括代码示例是最佳实践。

标签: sql sql-server


【解决方案1】:

这是一种方法(表名的拼写更正,尽管我接受这些有时超出您的控制范围):

DECLARE @insertedId INT;
BEGIN TRANSACTION
    INSERT INTO Appointment(CusId) VALUES(@cusId);
    SET @insertedId = SCOPE_IDENTITY();
COMMIT

BEGIN TRANSACTION
    INSERT INTO
        AppointmentDetails
    SELECT
        AppId = @insertedId 
        ,ApDay = @apDay
        ,Intime = @inTime
        ,OutTime = @outTime
        ,EmpId = @empId
    FROM
        Appointment
COMMIT

您也可以使用trigger,但它们只是邪恶的!

【讨论】:

    【解决方案2】:

    我认为他们会问如何返回生成的新密钥,然后将其插入到详细信息表中。

    如果使用 JDBC,请查看这篇文章,但所有语言的想法都是一样的:How to get the insert ID in JDBC?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 2019-01-06
      相关资源
      最近更新 更多