如题! 主键、外键都在同一张表,如: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]列又不能为空,那么第一次录入数据时该咋整呢?
[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]列又不能为空,那么第一次录入数据时该咋整呢?
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。当创建或更改表时可通过定义 FOREIGN KEY 约束来创建外键。
然后再在OA_PROJECT_MODULE录入数据。
add constraint FK_Prj_Module_Self foreign key (PARENT_ID)
references dbo.OA_PROJECT_MODULE (Module_ID)
go
主外键在同一张表。 在不改变这个关系情况下,有没有别的设置或方法,能在空记录时,录入一条记录?
没试过这样添加外键的,不知道楼主运行出来了吗??
如果非要让PARENT_ID参照Module_ID,那可以把PARENT_ID改成计算列
PARENT_ID as CONVERT(int,Module_ID)
或者用CHECK约束一下