sql - 如何在存储过程中一次插入两个表?

标签 sql sql-server sql-server-2008

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
How can I INSERT data into two tables simultaneously in SQL Server?



为学校做一个项目,所以任何帮助都会非常感谢你!

我有两张 table - 我如何插入两张 table ?所以两个表都是链接的。

第一个表称为 Customer主键名为 CID自动递增
CREATE TABLE [dbo].[Customer](
    [CID] [int] IDENTITY(1,1) NOT NULL,
    [LastName] [varchar](255) NOT NULL,
    [FirstName] [varchar](255) NOT NULL,
    [MiddleName] [varchar](255) NULL,
    [EmailAddress] [varchar](255) NOT NULL,
    [PhoneNumber] [varchar](12) NOT NULL        
 CONSTRAINT [PK__CInforma__C1F8DC5968DD69DC] PRIMARY KEY CLUSTERED 
(

第二个表名为 Employment具有链接到父表的外键
CREATE TABLE [dbo].[Employment](
    [EID] [int] IDENTITY(1,1) NOT NULL,
    [CID] [int] NOT NULL,
    [Employer] [varchar](255) NOT NULL, 
    [Occupation] [varchar](255) NOT NULL,
    [Income] [varchar](25) NOT NULL,
    [WPhone] [varchar](12) NOT NULL,
 CONSTRAINT [PK__Employme__C190170BC7827524] PRIMARY KEY CLUSTERED 
(

最佳答案

你需要做这样的事情:

DECLARE @NewID INT

INSERT INTO Customer(LastName,FirstName,......) VALUES(Value1, Value2, .....)

SELECT @NewID = SCOPE_IDENTITY()

INSERT INTO Employment(CID,Employer,.....) VALUES(@NewID, ValueA,..........)

SCOPE_IDENTITY : 返回插入到同一范围内的标识列中的最后一个标识值。范围是一个模块:存储过程、触发器、函数或批处理。因此,如果两条语句在同一个存储过程、函数或批处理中,则它们属于同一范围。

关于sql - 如何在存储过程中一次插入两个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318924/

相关文章:

sql-server - 删除 SQL 行,忽略所有外键和约束

mysql时差查询

c# - 为什么 ToPagedList 在一个空的 IQueryable 上花费半分钟,而底层 SQL 只运行一秒钟?

c# - 在 sql server 中调用 Web 服务

sql-server - 如何使用 Visual Studio 将 Azure SQL 备份 (.bacpac) 导入到 LocalDB?

sql - 获取多个数据库中某个表的行数

sql - 如何使用 MDX 查询获取最大值

sql - 如何在BigQuery中添加一列总行数

MySQL 将每第 N 列作为一个新行

sql - 在子查询中使用声明的变量