none
请教一个外键约束的问题 RRS feed

  • 问题

  • 我需要多个表和一个表的不同列建立外键约束。
    比如说有3个表t1,t2,t3。t1表有3列c1,c2,c3。t2表有2列c1,c2,c2列需要和t1表的c2列建立外键约束。t3表有2列c1,c2,c2列需要和t1表的c3列建立外键约束。该怎么弄呢?
    我试图用这样的代码满足需求,但是存在错误:
    create table t1
    (
    	c1 int not null,
    	c2 int not null,
    	c3 int not null,
    	primary key
    	(
    		c1,c2,c3
    	)
    )
    create table t2
    (
    	c1 int primary key not null,
    	c2 int not null foreign key references t1(c2)
    )
    create table t3
    (
    	c1 int primary key not null,
    	c2 int not null foreign key references t1(c3)
    )
    报错:在被引用表 't1' 中没有与外键 'FK__t2__c2__5812160E' 中的引用列列表匹配的主键或候选键
    郭鹏
    • 已移动 孟宪会 2009年11月3日 6:57 (发件人:ASP.NET 与 AJAX)
    2009年11月3日 6:40

答案

  • create table t2
    (
    	c1 int primary key not null,
    	c2 int not null foreign key references t1(c2) -- 要求 t1(c2) 是主键
    )
    
    
    是否是写反了
    
    create table t2
    (
    	c1 int primary key not NULL ,
    	c2 int not null 
    )
    create table t3
    (
    	c1 int primary key not null,
    	c2 int not null 
    )
    
    create table t1
    (
    	c1 int not null,
    	c2 int not NULL foreign key references t2(c1),
    	c3 int not NULL foreign key references t3(c1),
    	primary key
    	(
    		c1,c2,c3
    	)
    )

    知识改变命运,奋斗成就人生!
    • 已标记为答案 Hugo12345 2009年11月3日 7:58
    2009年11月3日 7:02