将外键指向datetime

oeb*_*nez 0 sql sql-server sql-server-2008

可以从datetime数据类型生成外键吗?我尝试这个,但我得到错误消息:消息1776,级别16,状态0,行1在引用的表'penduduk'中没有与外键'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),
)
Run Code Online (Sandbox Code Playgroud)

Ian*_*ton 5

如果它是合适的候选键,则只能在外键约束中使用列作为引用.

来自联机丛书:

FOREIGN KEY约束不必仅链接到另一个表中的PRIMARY KEY约束; 它也可以定义为引用另一个表中UNIQUE约束的列.

请参阅外键约束.

在您的情况下tgl_lahir既不是唯一的也不是主要的,因此不能在您的外键约束中使用.

如果你添加一个唯一约束tgl_lahir它应该工作; 是否可以使用您的数据是真正的问题.