插入NEWID()ID的运行时,在运行Store Procedure时出现FOREIGN KEY约束错误

时间:2018-03-22 10:57:12

标签: sql sql-server stored-procedures

创建表格

create table Empl(E_ID nvarchar(36) primary key, Name varchar(50), Designation varchar(50)) 

create table Location(L_ID nvarchar(36) primary key, Location varchar(50), E_ID nvarchar(36) foreign key references Empl(E_ID)) 

create table Contact_Emp (C_ID nvarchar(36) primary key, Contact_Number varchar(50), Lo_ID nvarchar(36) foreign key references Location(L_ID)) 

存储过程

alter proc InsertMultiplevalue  
(  
@Name varchar(50),  
@Designation varchar(50),  
@Location varchar(50),  
@Contact varchar(50)  
)  
as  
begin  
        insert into Empl values(newid(),@Name, @Designation)  
        declare @Employee_ID nvarchar(36) = NEWID()  
        insert into Location values(@Location,@Employee_ID)  
        declare @Cot_ID nvarchar(36) = NEWID()  
        insert into Contact_Emp values(@Contact,@Cot_ID)  
end  

Ececute SP

exec InsertMultiplevalue 'UserName','Programmer','India','Admin@learn2Free.Com' 

我收到此错误

  

消息547,级别16,状态0,过程InsertMultiplevalue,第25行       INSERT语句与FOREIGN KEY约束“FK__Location__E_ID__33D4B598”冲突。冲突发生在数据库中   “LocalDBTest”,表“dbo.Empl”,列'E_ID'。       该语句已终止。       消息547,级别16,状态0,过程InsertMultiplevalue,第27行       INSERT语句与FOREIGN KEY约束“FK__Contact_E__Lo_ID__36B12243”冲突。冲突发生在数据库中   “LocalDBTest”,表“dbo.Location”,列“L_ID”。

1 个答案:

答案 0 :(得分:0)

STore程序的变化是否有效

alter proc InsertMultiplevalue  
(  
@Name varchar(50),  
@Designation varchar(50),  
@Location varchar(50),  
@Contact varchar(50)  
)  
as  
begin  
          declare @Employee_ID nvarchar(36) = NEWID()  
        insert into Empl values(@Employee_ID,@Name, @Designation)  

        declare @Location_ID nvarchar(36) = NEWID() 
        insert into Location values(@Location_ID,@Location,@Employee_ID)  

        declare @Cot_ID nvarchar(36) = NEWID()  
        insert into Contact_Emp values(@Cot_ID,@Contact,@Location_ID)  
end