none
不能创建E-R图的问题。 RRS feed

  • 问题

  • 本人是个新手,在利用SQL server 2000上创建E-R图时提示如下错误:

    'Department' 表成功保存
    'StudentsInfo' 表
    - 不能创建关系 'FK_StudentsInfo_Department'。 
    ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 'FK_StudentsInfo_Department' 冲突。该冲突发生于数据库 'Student',表 'Department', column 'DptName'。

    请问如何解决?请知道的朋友告诉下,谢谢。

    2010年10月14日 2:25

答案

  • 樓主的問題應該是創建外健

    引用的列需要有唯一性(主健/唯一索引/唯一約束)

    表已存在數據時,要先檢查

     

    如果是新增數據,需要滿足引用表內容

     

     

    CREATE TABLE T(ID INT UNIQUE)
    CREATE TABLE T2(TID INT FOREIGN KEY REFERENCES T(ID))
    DROP TABLE t2,t
    GO
    CREATE TABLE T(ID INT )
    CREATE TABLE T2(TID INT)
    
    INSERT t2 SELECT 2
    --檢查是否唯一
    SELECT ID FROM T GROUP BY ID HAVING COUNT(1)>1
    
    成立時:
    
    ALTER TABLE T ADD CONSTRAINT U_T_ID unique(ID)
    
    --檢查值是否一致
    SELECT * FROM T2 WHERE NOT EXISTS(SELECT 1 FROM t WHERE ID=t2.TID)
    
    --有結果時WITH NOCHECK,注意記得修復不規範的數據
    ALTER TABLE T2 WITH NOCHECK ADD CONSTRAINT FK_T2_TID FOREIGN KEY (TID) REFERENCES T(ID)
    --反之
    ALTER TABLE T2 ADD CONSTRAINT FK_T2_TID FOREIGN KEY (TID) REFERENCES T(ID)
    
    

     

    參照:http://msdn.microsoft.com/zh-cn/library/ms175464%28v=SQL.90%29.aspx

     

     

     

     


    ROY WU(吳熹 )
    2010年10月15日 4:22
    版主

全部回复

  • Can you post schema of involved tables? Looks like fkey doesn't set properly. 
    2010年10月14日 2:29
  • 本人是个新手,在利用SQL server 2000上创建E-R图时提示如下错误:

    'Department' 表成功保存
    'StudentsInfo' 表
    - 不能创建关系 'FK_StudentsInfo_Department'。 
    ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 'FK_StudentsInfo_Department' 冲突。该冲突发生于数据库 'Student',表 'Department', column 'DptName'。

    请问如何解决?请知道的朋友告诉下,谢谢。

    2010年10月14日 3:13
  • Can you post schema of involved tables? Looks like fkey doesn't set properly. 


    i want to post schema of involved tables,but i can not support appendix of talbes here,because here does not suppor the function of appendix.

    can you tell me how to set the fkey exactly?

    2010年10月14日 3:25
  • is there one can help me?
    2010年10月14日 9:22
  • Can't tell without table schemas, books online has generic info and sample of this.
    2010年10月14日 13:37
  •  i am a new learner and i can not understand.

    2010年10月15日 3:28
  • Sounds need formal training.
    2010年10月15日 3:39
  • 樓主的問題應該是創建外健

    引用的列需要有唯一性(主健/唯一索引/唯一約束)

    表已存在數據時,要先檢查

     

    如果是新增數據,需要滿足引用表內容

     

     

    CREATE TABLE T(ID INT UNIQUE)
    CREATE TABLE T2(TID INT FOREIGN KEY REFERENCES T(ID))
    DROP TABLE t2,t
    GO
    CREATE TABLE T(ID INT )
    CREATE TABLE T2(TID INT)
    
    INSERT t2 SELECT 2
    --檢查是否唯一
    SELECT ID FROM T GROUP BY ID HAVING COUNT(1)>1
    
    成立時:
    
    ALTER TABLE T ADD CONSTRAINT U_T_ID unique(ID)
    
    --檢查值是否一致
    SELECT * FROM T2 WHERE NOT EXISTS(SELECT 1 FROM t WHERE ID=t2.TID)
    
    --有結果時WITH NOCHECK,注意記得修復不規範的數據
    ALTER TABLE T2 WITH NOCHECK ADD CONSTRAINT FK_T2_TID FOREIGN KEY (TID) REFERENCES T(ID)
    --反之
    ALTER TABLE T2 ADD CONSTRAINT FK_T2_TID FOREIGN KEY (TID) REFERENCES T(ID)
    
    

     

    參照:http://msdn.microsoft.com/zh-cn/library/ms175464%28v=SQL.90%29.aspx

     

     

     

     


    ROY WU(吳熹 )
    2010年10月15日 4:22
    版主