可以从datetime数据类型生成外键吗?我尝试了一下,但我得到了错误信息:消息1776,级别16,状态0,行1在被引用的表中没有与外键'tgllahir‘中的引用列列表相匹配的主键或候选键。消息1750,级别16,状态0,行1无法创建约束。请参阅前面的错误。
我使用这个查询
父表:
create table penduduk (
no int identity(1,1),
noktp char(11) primary key,
nama varchar(20),
tgl_lahir datetime NOT NULL,
namahari varchar(20),
tgl int,
bulan int,
namabulan varchar(20),
tahun int,
umur int
)
CREATE TABLE tua(
noktp CHAR(11) PRIMARY KEY,
tgl_lahir datetime NOT NULL CONSTRAINT tgllahir FOREIGN KEY REFERENCES penduduk(tgl_lahir),
FOREIGN KEY(noktp) REFERENCES penduduk(noktp),
)
发布于 2013-05-09 21:03:21
试试这个:
create table penduduk (
no int identity(1,1),
noktp char(11) primary key,
nama varchar(20),
tgl_lahir datetime NOT NULL unique,
namahari varchar(20),
tgl int,
bulan int,
namabulan varchar(20),
tahun int,
umur int
)
CREATE TABLE tua(
noktp CHAR(11) PRIMARY KEY,
tgl_lahir datetime NOT NULL CONSTRAINT tgllahir FOREIGN KEY REFERENCES penduduk(tgl_lahir),
FOREIGN KEY(noktp) REFERENCES penduduk(noktp),
)
发布于 2013-05-09 21:00:37
如果某列是合适的候选键,则只能将该列用作外键约束中的引用。
来自联机丛书:
外键约束不必仅链接到另一个表中的主键约束;还可以将其定义为引用另一个表中唯一约束的列。
在本例中,tgl_lahir
既不是唯一的,也不是主键,因此不能在外键约束中使用。
如果您为tgl_lahir
添加了一个唯一的约束,那么它应该可以工作;这是否适用于您的数据才是真正的问题。
发布于 2013-05-09 21:00:50
需要将penduduk.tgl_lahir
列定义为primary key,或者定义为要由foreign key约束引用的unique constraint。
https://stackoverflow.com/questions/16462197
复制相似问题