日期:2014-05-17  浏览次数:20455 次

SQL Server 2008中数据库技术中的疑难问题?
在SQL Sever2008数据库中,将几张表都设计好并并将要求的列设置为主键,保存后,在对它们建立外键关系,再次保存,为什么 就不能保存呢?
  有什么简易的方法可以进行完成保存吗?

 真诚的期待并感谢您的回复!

------解决方案--------------------
1,可以看看系统提示的不能保存的具体原因,外键不能保存通常原因是因为
数据表中已经存在了违法外键约束的数据,此时在保存数据库会提示违法了外键
约束所以不能保存
2,可以先把违反约束的数据清理掉,然后在建立外键即可。

------解决方案--------------------
3. 如果数据已经有违法foreign key constraint,可以使用WITH NOCHECK,即“强制外键约束”选取“否”。
e.g.

CREATE TABLE [ORDERS](ID INT IDENTITY(1,1) PRIMARY KEY ,CreateON datetime)
go
CREATE TABLE [ORDER_lines](ID INT IDENTITY(1,1),CreateON datetime,orders_ID INT)
go

ALTER TABLE [ORDER_lines] 
WITH NOCHECK --不检查数据创建外键
ADD CONSTRAINT FK_ORDER_lines_ORDERID FOREIGN KEY(orders_ID)
REFRENCES DBO.[ORDERS](ID)

------解决方案--------------------
2楼说的不审核外键,那建立外键还有什么意义。