使用SQL Server中的目标表中的存储过程插入外键值

时间:2017-08-18 17:49:34

标签: sql-server stored-procedures

我有两张这样的表:

create table tblempdetail
(
     id int primary key,
     name nvarchar(20),
     email nvarchar(20) unique
)

create table tblemployee
(
    empid int,
    month nvarchar(20),
    year nvarchar(20),
    salary int
)

我已将参考文献作为:

alter table tblemployee 
    add constraint tblemployee_empid_FK 
    foreign key (empid) references tblempdetail(id)

我想创建一个程序来填充tblemployee中的值......其中empid应自动填写,并参考tblempdetail

1 个答案:

答案 0 :(得分:1)

首先使tblempdetail.id成为标识列

create table tblempdetail
 (id int identity primary key,
   name nvarchar(20),
   email nvarchar(20) unique)

然后

Create procedure SaveEmployee
  @name nvarchar(20) = null,
  @email nvarchar(20) = null,
  @month nvarchar(20) = null,
  @year nvarchar(20) = null,
  @salary int = null
As
 Set NoCount On
 Declare @id int

    Insert tblempdetail(Name, email) 
    Values(@name, @email)
    Set @id = scope_Identity()

    Insert tblemployee (empid, month, year, salary)
    values( @id, @Month, @year, @salary)
 return 0

但是,我强烈建议您阅读并研究上面@marc_s的评论。您的架构设计非常差,对适当设计的少量研究(日期或日期部分的变量很糟糕)将在以后为您节省大量心痛。