簡體   English   中英

同時插入兩個表中插入新記錄

[英]Insert into two tables at the same time insert new record

我有兩個要在數據庫中使用的SQL Server表。

這是我的表VMA_VehicleDetails_TB

CREATE TABLE [dbo].[VMA_VehicleDetails_TB] 
(
    [VehRegID]   INT            IDENTITY (1000, 2) NOT NULL,
    [TraPNumber] NVARCHAR (60)  NOT NULL,
    [VehOwner]   NVARCHAR (60)  NOT NULL,
    [RegExpDate] DATE           NOT NULL,
    [InsExpDate] DATE           NOT NULL,
    [VehModel]   NVARCHAR (120) NOT NULL,
    [VehOrigin]  NVARCHAR (120) NOT NULL,
    [VehType]    NVARCHAR (80)  NOT NULL,
    PRIMARY KEY CLUSTERED ([VehRegID] ASC)
);

這是我的表VMA_VehDrvAssigned_TB

CREATE TABLE [dbo].[VMA_VehDrvAssigned_TB] 
(
    [VehRegID]   INT DEFAULT ((0)) NOT NULL,
    [DrvRegID]   INT DEFAULT ((0)) NOT NULL,
    [IsAssigned] BIT DEFAULT ((0)) NOT NULL,
    CONSTRAINT [PK_VMA_VehDrvAssigned_TB] PRIMARY KEY CLUSTERED ([VehRegID] ASC)
);

我已使用此存儲過程將新的注冊車輛ID添加到VMA_VehDrvAssigned_TB表。 一切正常。

ALTER PROCEDURE [dbo].[addNewVehicleDetail_SP]
    @TraPNumber     NVARCHAR (60)
    ,@VehOwner      NVARCHAR (60)
    ,@RegExpDate    DATE
    ,@InsExpDate    DATE
    ,@VehModel      NVARCHAR (120)
    ,@VehOrigin     NVARCHAR (120)
    ,@VehType       NVARCHAR (80)
    ,@IsAssigned    BIT
    ,@DrvRegID      VARCHAR(60)
AS
BEGIN
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    INSERT INTO [VMA_VehicleDetails_TB] (TraPNumber, VehOwner, RegExpDate, InsExpDate, VehModel, VehOrigin, VehType) 
    VALUES (@TraPNumber, @VehOwner, @RegExpDate, @InsExpDate, @VehModel, @VehOrigin, @VehType)

    INSERT INTO VMA_VehDrvAssigned_TB (VehRegID)
        SELECT 
            VehRegID = scope_identity();
END

現在,我想在插入新記錄時將@IsAssigned@DrvRegID添加到同一表。 但是,我只知道向表中添加單列。 我有什么問題嗎?

只需修改最后一個INSERT。

ALTER PROCEDURE [dbo].[addNewVehicleDetail_SP]
    -- Add the parameters for the stored procedure here
    @TraPNumber     NVARCHAR (60)
    ,@VehOwner      NVARCHAR (60)
    ,@RegExpDate    DATE
    ,@InsExpDate    DATE
    ,@VehModel      NVARCHAR (120)
    ,@VehOrigin     NVARCHAR (120)
    ,@VehType       NVARCHAR (80)
    ,@IsAssigned    BIT
    ,@DrvRegID      VARCHAR(60)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    -- Insert statements for procedure here
    INSERT INTO [VMA_VehicleDetails_TB] (TraPNumber,VehOwner,RegExpDate,InsExpDate,VehModel,VehOrigin,VehType) 
    VALUES (@TraPNumber,@VehOwner,@RegExpDate,@InsExpDate,@VehModel,@VehOrigin,@VehType)
    INSERT INTO VMA_VehDrvAssigned_TB (VehRegID, DrvRegID, IsAssigned )
    SELECT scope_identity(), @DrvRegID, @IsAssigned ;
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM