假设我的表结构看起来像这样:
CREATE TABLE [dbo].[table1] (
[id] [int] IDENTITY(1,1) NOT NULL,
[data] [varchar](255) NOT NULL,
CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ([id] ASC)
)
CREATE TABLE [dbo].[table2] (
[id] [int] IDENTITY(1,1) NOT NULL,
[table1_id] [int] NOT NULL,
[data] [varchar](255) NOT NULL,
CONSTRAINT [PK_table2] PRIMARY KEY CLUSTERED ([id] ASC)
)
Run Code Online (Sandbox Code Playgroud)
第[id]一个表的[table1_id]字段对应于第二个字段的字段.我想要做的是在单个事务中将数据插入到两个表中.现在我已经知道如何通过执行INSERT-SELECT-INSERT来做到这一点,如下所示:
BEGIN TRANSACTION;
DECLARE @id [int];
INSERT INTO [table1] ([data]) VALUES ('row 1');
SELECT @id = SCOPE_IDENTITY();
INSERT INTO [table2] ([table1_id], [data]) VALUES (@id, 'more of row 1');
COMMIT …Run Code Online (Sandbox Code Playgroud) 我有2个表,custlogin并且custinfo:
custlogin:
custid int primary key auto notnull
custusename varchar(25)
custpassword varchar(50)
Run Code Online (Sandbox Code Playgroud)
custinfo:
custid foriegnkey custlogin.custid ondelete set NULL
custfirstname varchar(25)
custlastname varchar(25)
custaddress varchar(100)
Run Code Online (Sandbox Code Playgroud)
我想编写一个存储过程,它将插入到两个表中
更确切地说,插入custlogin带custusername custpassword,这将返回custid用作外键custinfo.
我搜索了很多,但我找不到任何解决方案.