INSERT 语句与 FOREIGN KEY 约束“FK_

has*_*him 1 c# t-sql sql-server sql-server-2012

我有两个表,一对一的关系我在项目表的 ID 中创建了 projectDetails FK 的 DetailsID:

 projects: 
         ID,         //has FK With DetailsID in Details table & auto identity (1,1)
         ProjectName,
         Areas,
         PaymentSystem,
         ReceivedDate,
         PropertyClassification,
         ProjectImage

  ProjectDetails:
     DetailsID ,auto identity ( 1,1)
     ProjectDetailName,
     ProjectDetailImage
Run Code Online (Sandbox Code Playgroud)

我试图在项目表中插入新记录,在这行代码中给了我这个错误:

    con.Open();
    comm.ExecuteNonQuery(); // when execute
Run Code Online (Sandbox Code Playgroud)

System.Data.SqlClient.SqlException: 'INSERT 语句与 FOREIGN KEY 约束“FK_Projects_ProjectDetails”冲突。冲突发生在数据库“AlamaarRealEstate”、表“dbo.ProjectDetails”、“DetailsID”列中。

这是我要插入的存储:

ALTER proc [Insert_Project]
   @Projectname                    NVARCHAR(MAX) , 
   @areas                          NVARCHAR(MAX) , 
   @Paymentsystem                  NVARCHAR(MAX) , 
   @Receiveddate                   date , 
   @Classification                 NVARCHAR(MAX) , 
   @Projectimage                   Nvarchar(MAX) 
  as

  INSERT INTO dbo.Projects
      (            
        ProjectName,
        Areas,
        PaymentSystem,
        ReceivedDate,
        PropertyClassification,
        ProjectImage                                                     
      ) 
 VALUES 
      ( 
        @Projectname ,
        @areas,
        @Paymentsystem ,
        @Receiveddate ,
        @Classification,
        @Projectimage          

      )
Run Code Online (Sandbox Code Playgroud)

小智 6

问题解释了答案。Referential Integrity未正确维护,您正在尝试插入主值不存在的子表。请先插入值Project_details。这将解决您的问题。如果你没有什么这会抛出错误,只需在插入前检查DetailIDinProjects表是否存在。