首页 文章

在oracle中创建外键

提问于
浏览
-3

是否有人可以帮助我为我的状态表创建一个外键 . 我需要在状态表中的 code 上放置一个外键约束,引用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_gmidx ,其中 id 为主键 .

2 回答

  • 0

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

    ALTER TABLE STATUS ADD (
    CONSTRAINT status_fk_building FOREIGN KEY (code)
    REFERENCES building (id)   
    ENABLE VALIDATE);
    
  • 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"属于哪个表 . 让我知道这个是否奏效 .

相关问题