sql – 外键是否可以引用同一个表中的主键?

前端之家收集整理的这篇文章主要介绍了sql – 外键是否可以引用同一个表中的主键?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只是认为答案是错误的,因为外键没有唯一性属性.

但是有些人说可以自己加入桌子.
我是sql的新手.如果是真的请解释如何以及为什么?

Employee table
| e_id | e_name  | e_sala  |  d_id  |
|----  |-------  |-----    |--------|
|  1   |   Tom   |  50K    |    A   |
|  2   | Billy   |  15K    |    A   |
|  3   | Bucky   |  15K    |    B   |


department table
| d_id | d_name  |
|----  |-------  |
|  A   |   XXX   | 
|  B   |   YYY   |

现在d_id是外键,所以它如何成为主键.并解释一下加入.有什么用?

解决方法

我认为这个问题有点令人困惑.

如果你的意思是“可以将外键”称为“同一个表中的主键吗?”,答案肯定是肯定的,因为有些人回答说.例如,在员工表中,员工的行可能有一列用于存储经理的员工编号,其中经理也是员工,因此在表中会有一行,就像任何其他员工的一行一样.

如果你的意思是“可以列(或列集)是主键还是同一个表中的外键?”,在我看来,答案是否定的;这看起来毫无意义.但是,以下定义在sql Server中成功!

create table t1(c1 int not null primary key foreign key references t1(c1))

但我认为,除非有人提出一个实际的例子,否则有这样的约束是没有意义的.

AmanS,在您的示例中,d_id在任何情况下都不能成为Employee表中的主键.一个表只能有一个主键.我希望这清除你的怀疑. d_id是/可以是仅在department表中的主键.

猜你在找的MsSQL相关文章