我想在一个表里 同时拥有主键(PK)和外键(FK)???给个例子。。谢谢。。

解决方案 »

  1.   

    -- Create table
    create table DB_XTWH.T_XT_JS_GNZY
    (
      JS_DM VARCHAR2(20) not null,
      GN_DM NUMBER(20) not null
    )
    tablespace TS_WHAJ
      pctfree 10
      initrans 1
      maxtrans 255
      storage
      (
        initial 64K
        minextents 1
        maxextents unlimited
      );
    -- Create/Recreate primary, unique and foreign key constraints 
    alter table DB_XTWH.T_XT_JS_GNZY
      add constraint PK_T_XT_JS_GNZY primary key (JS_DM, GN_DM)
      using index 
      tablespace TS_INDEX_WHAJ
      pctfree 10
      initrans 2
      maxtrans 255
      storage
      (
        initial 64K
        minextents 1
        maxextents unlimited
      );
    alter table DB_XTWH.T_XT_JS_GNZY
      add constraint FK_XT_GNZY_R_XT_JS_GNS foreign key (GN_DM)
      references DB_XTWH.T_XT_GNZY (GN_DM)
      disable;
    alter table DB_XTWH.T_XT_JS_GNZY
      add constraint FK_XT_JS_R_XT_JS_GNS foreign key (JS_DM)
      references DB_XTWH.T_XT_JS (JS_DM);
      

  2.   


    SQL> edi
    已写入 file afiedt.buf  1  create table t(id number,name varchar2(10),
      2* constraint pk_id primary key(id))
    SQL> /表已创建。SQL> create table t_sun(sno varchar2(5),id number,sname varchar2(10),
      2  constraint pk_sno primary key(sno),
      3  constraint fk_id foreign key(id) references t(id))
      4  /表已创建。--加个constraint fk_id foreign key(id) references t(id) on delete cascade(set null) 级联删除或者是主表的主键记录删除 外键的记录为空
      

  3.   

    谢谢
    那我问一下,我现在有3张表,A,B,C.表A-出口预定日(PK),出口预定番号(PK)等等。
    表B-出口日(PK),出口番号(PK),出口预定日(FK),出口预定番号(FK)等等。
    表C-出口日(FK),出口番号(FK),出口预定日(FK),出口预定番号(FK)等等。问题1。表B的 出口预定日(FK),出口预定番号(FK),这两个项是属于表A的外键还是表c的外键?(按照楼上2楼的代码的话,应该成为哪个表的外键?)问题2:有必要这样设成外键吗? 都设置为主键,在关联不是一样吗? 设置外键更好吗?