微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用过程将值插入到同时更新主键和外键的两个 SQL Server 表中?

如何解决如何使用过程将值插入到同时更新主键和外键的两个 SQL Server 表中?

我有这样的事情:

CREATE TABLE [dbo].[table1] 
(
    [id1] [int] IDENTITY(1,1) NOT NULL,[data] [varchar](255) NOT NULL,CONSTRAINT [PK_table1] PRIMARY KEY(id1) 
)

CREATE TABLE [dbo].[table2] 
(
    [id2] [int] IDENTITY(1,[id1] [int],CONSTRAINT [PK_table2] PRIMARY KEY (id2)
    CONSTRAINT [FK_table2] FOREIGN KEY(id1) REFERENCES Table1
)

我想使用过程向两个表添加值。我没有添加任何键值,只是数据值。

如果我使用 INSERT INTO 将数据添加到表 1,其主键将自动递增。我还将在相同的过程中增加表 2。

我希望在运行该过程时,表 1 的自动递增主键应自动更新为表 2 中的外键。

解决方法

你需要做这样的事情:

CREATE PROCEDURE dbo.InsertData (@data VARCHAR(255))
AS
BEGIN
    -- Insert row into table1
    INSERT INTO dbo.Table1 (data) VALUES (@data);
    
    -- Capture the newly generated "Id1" value
    DECLARE @NewId1 INT;
    SELECT @NewId1 = SCOPE_IDENTITY();
    
    -- Insert data into table2
    INSERT INTO dbo.table2 (Id1) VALUES (@NewId1);
END
,

我不知道我是否理解你想做什么,但我认为你可以这样做:

INSERT INTO table1 (data) VALUES 'mydata'
DECLARE @LastKey INT
SET @LastKey = SCOPE_IDENTITY() -- FOR SQL SERVER,OR LAST_INSERT_ID() FOR MYSQL
INSERT INTO table2 (data) VALUES @LastKey

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。