在oracle中创建外键

时间:2014-12-09 21:38:07

标签: sql oracle ddl

是否有人可以帮助我为Status表创建外键。我需要在状态表中的代码上放置外键约束,参考Building表中的 id

TABLE building
(
  build_name           VARCHAR2(50,0) NOT NULL,
  id            NUMBER (38,0) NOT NULL,
  mapid                NUMBER (10,0) NOT NULL
);

TABLE STATUS
(
  code         VARCHAR(2 BYTE) NOT NULL,
  status_name  VARCHAR2(40 BYTE) NOT NULL,
);

Bulding表的约束为building_gmidxid为主键。

2 个答案:

答案 0 :(得分:0)

以下是您当前要求的快速语法,但我建议您浏览oracle文档,以正确理解这意味着什么。

ALTER TABLE STATUS ADD (
CONSTRAINT status_fk_building FOREIGN KEY (code)
REFERENCES building (id)   
ENABLE VALIDATE);

答案 1 :(得分:0)

在撰写问题时,您是否遗漏CREATE TABLE *name*以节省时间?我看到的第一件事是您的外键必须与主键具有相同的数据类型和大小。如果表已经存在,则代码为:

ALTER TABLE status MODIFY (code NUMBER(38));

从那里你需要

ALTER TABLE status ADD FOREIGN KEY (code) REFERENCES (building_gmidx)

为什么构建名为building_gmidx的主键和列普通id的约束?所有规范化表属性都应为唯一。如果您只是将列命名为“id”building_gmidx,那会不会更好。为了防止以后添加其他类型的id,您不必考虑哪个表“id”属于哪个。如果有效,请告诉我。