新行的主键自动转到第二个表,它是新行中的外键

时间:2015-12-26 13:48:04

标签: sql sql-server database

这是我的第一张表

CREATE TABLE [dbo].[Booking_Date] 
(
    [Book_ID]            INT      IDENTITY (1, 1) NOT NULL,
    [Book_Checkin_Date]  DATETIME NULL,
    [Book_Checkout_date] DATETIME NULL,
    [Adults]             INT      NULL,
    [Children]           INT      NULL,

    CONSTRAINT [PK_Booking_Date] 
       PRIMARY KEY CLUSTERED ([Book_ID] ASC)
);

这是我的第二张表

CREATE TABLE [dbo].[Room_Detail] 
(
    [R_D_ID]     INT   IDENTITY (1, 1) NOT NULL,
    [Cust_ID]    INT   NULL,
    [Book_ID]    INT   NULL,
    [Room_ID]    INT   NULL,
    [Room_Price] MONEY NULL,

    PRIMARY KEY CLUSTERED ([R_D_ID] ASC),
    CONSTRAINT [FK_Room_Detail_Customer] 
        FOREIGN KEY ([Cust_ID]) REFERENCES [dbo].[Customer] ([Cust_ID]),
    CONSTRAINT [FK_Room_Detail_Booking_Date] 
        FOREIGN KEY ([Book_ID]) REFERENCES [dbo].[Booking_Date] ([Book_ID]),
    CONSTRAINT [FK_Room_Detail_Room] 
        FOREIGN KEY ([Room_ID]) REFERENCES [dbo].[Room] ([Room_ID])
);

当我将数据插入到具有预订日期的第一个表格a中时,该数据的主键会自动插入第二个表格,即Book_ID列中的房间详细信息

1 个答案:

答案 0 :(得分:1)

如果要在T-SQL / SQL Server中执行此操作,可以在AFTER INSERT表上使用Booking_Date触发器 - 如下所示:

CREATE TRIGGER trgInsertBookingDate
ON dbo.Booking_Date
AFTER INSERT
AS
    -- for each row newly inserted into "Booking_Date",
    -- insert a new (empty) row into "Room_Detail"
    INSERT INTO dbo.Room_Detail(Book_ID)
        SELECT i.Book_ID
        FROM Inserted i

因此,每次将一行或多行插入Booking_Date时,对于插入的每个新行,都会在Room_Detail中插入一个新的(或多或少为空)行。由于您没有任何其他可用信息,因此您只能 在触发器中设置Book_ID的{​​{1}}列 - 其他列必须以某种方式指定/填充后