You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建SQL Server存储过程实现Person与Customer表的关联插入操作

SQL Server 存储过程实现:插入客户信息

现有表结构

Person表(人员基础信息表)

字段名数据类型
IDBigInt
FirstNamenvarchar(100)
MiddleNameSnvarchar(100)
Surnamenvarchar(100)
Phonevarchar(20)
EMailnvarchar(100)

Customer表(客户状态关联表)

字段名数据类型
IDBigInt
PersonIDBigInt
Statusnvarchar(100)

Worker表(员工状态关联表,结构与Customer一致)

字段名数据类型
IDBigInt
PersonIDBigInt
Statusnvarchar(100)

存储过程实现

以下是满足需求的InsertCustomer存储过程,它会先将人员基础信息插入Person表,再关联插入Customer表的状态信息:

CREATE PROCEDURE InsertCustomer
    @FirstName nvarchar(100),
    @MiddleNameS nvarchar(100),
    @Surname nvarchar(100),
    @Phone varchar(20),
    @EMail nvarchar(100),
    @Status nvarchar(100)
AS
BEGIN
    SET NOCOUNT ON;

    -- 插入Person表并获取生成的PersonID(假设ID是自增IDENTITY字段)
    DECLARE @NewPersonID BigInt;
    INSERT INTO Person (FirstName, MiddleNameS, Surname, Phone, EMail)
    VALUES (@FirstName, @MiddleNameS, @Surname, @Phone, @EMail);
    SET @NewPersonID = SCOPE_IDENTITY();

    -- 将关联信息插入Customer表
    INSERT INTO Customer (PersonID, Status)
    VALUES (@NewPersonID, @Status);

    -- 返回生成的CustomerID(如果Customer.ID是自增字段)
    SELECT SCOPE_IDENTITY() AS GeneratedCustomerID;
END

说明

  1. 假设Person和Customer表的ID字段均为自增主键(IDENTITY),如果你的ID是手动赋值或使用其他生成方式,需要替换SCOPE_IDENTITY()为对应的ID获取逻辑。
  2. SET NOCOUNT ON用于抑制存储过程执行时返回的"影响行数"信息,提升性能并避免客户端误解结果。
  3. 存储过程包含了Person表的所有字段参数,以及Customer表需要的Status参数,调用时只需传入对应值即可完成两步插入操作。

内容的提问来源于stack exchange,提问作者cagatay.beser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:45:32