如题! 主键、外键都在同一张表,如:CREATE TABLE [dbo].[OA_PROJECT_MODULE] (
[Module_ID] [int] IDENTITY (1, 1) NOT NULL ,
[CODE] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[NAME] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[PARENT_ID] [int] NULL ,
[PROJECT_ID] [int] NULL ,
[Main_Function] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[Module_Notes] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[MODULE_TYPE] [tinyint] NULL 
) ON [PRIMARY]
GO
[Module_ID] 是主键;
[PARENT_ID] 是外键!我要录入一条数据,表是空记录,[PARENT_ID]列又不能为空,那么第一次录入数据时该咋整呢?

解决方案 »

  1.   

    FOREIGN KEY 约束
    外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。当创建或更改表时可通过定义 FOREIGN KEY 约束来创建外键。
      

  2.   

    你得把PARENT_ID所在的主表先录入数据。
    然后再在OA_PROJECT_MODULE录入数据。
      

  3.   

    在 PowerDesigner里:主外键的建立代码如下:alter table dbo.OA_PROJECT_MODULE
       add constraint FK_Prj_Module_Self foreign key (PARENT_ID)
          references dbo.OA_PROJECT_MODULE (Module_ID)
    go
    主外键在同一张表。 在不改变这个关系情况下,有没有别的设置或方法,能在空记录时,录入一条记录?
      

  4.   

    Module_ID有没有值啊?PARENT_ID录入的数据参照Module_ID字段里的值直接录入就行啦。
    没试过这样添加外键的,不知道楼主运行出来了吗??
    如果非要让PARENT_ID参照Module_ID,那可以把PARENT_ID改成计算列
    PARENT_ID as CONVERT(int,Module_ID)
    或者用CHECK约束一下