将一个表的主键插入另一个表

时间:2013-11-07 14:34:52

标签: sql sql-server

我在SQL Server中有两个表,AppointmentAppointmentDetails

Appointment表格有两列AppIdCusId

AppointmentDetail表格包含AppIdApDayIntimeOutTimeEmpId

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

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

2 个答案:

答案 0 :(得分:0)

以下是一种方法(虽然我接受这些表格的更正拼写有时超出了你的控制范围):

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,但他们只是邪恶的!

答案 1 :(得分:0)

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

如果使用JDBC,请查看此帖子,但所有语言的想法都相同:How to get the insert ID in JDBC?