首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将外键指向datetime

将外键指向datetime
EN

Stack Overflow用户
提问于 2013-05-09 20:49:56
回答 3查看 2.5K关注 0票数 0

可以从datetime数据类型生成外键吗?我尝试了一下,但我得到了错误信息:消息1776,级别16,状态0,行1在被引用的表中没有与外键'tgllahir‘中的引用列列表相匹配的主键或候选键。消息1750,级别16,状态0,行1无法创建约束。请参阅前面的错误。

我使用这个查询

父表:

代码语言:javascript
运行
复制
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),
)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-09 21:03:21

试试这个:

代码语言:javascript
运行
复制
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),
)
票数 0
EN

Stack Overflow用户

发布于 2013-05-09 21:00:37

如果某列是合适的候选键,则只能将该列用作外键约束中的引用。

来自联机丛书:

外键约束不必仅链接到另一个表中的主键约束;还可以将其定义为引用另一个表中唯一约束的列。

参见Foreign Key Constraints

在本例中,tgl_lahir既不是唯一的,也不是主键,因此不能在外键约束中使用。

如果您为tgl_lahir添加了一个唯一的约束,那么它应该可以工作;这是否适用于您的数据才是真正的问题。

票数 5
EN

Stack Overflow用户

发布于 2013-05-09 21:00:50

需要将penduduk.tgl_lahir列定义为primary key,或者定义为要由foreign key约束引用的unique constraint

SQLFiddle

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16462197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档