3

表記について簡単な質問があります。私は今2つのテーブルを持っています。

これには基本的な動物情報があります。

 create table d_animals (
  an_id     integer     primary key
, an_gender varchar2(1) not null
, an_dob    date        not null
, an_name   varchar2(10)    not null
);

これは猫についてです:

 create table d_cats (
       an_id                        integer     primary key
     , feline_leukemia_test_date    date        not null
     , an_id    foreign key references d_animals_(an_id)
     );

ご覧のとおり、d_cats の主キーとして an_id を使用しようとしていますが、d_animals テーブルの an_id も参照しています。d_cats で次のエラーが発生します。

 ORA-00957: duplicate column name

では、これを正しく書くにはどうすればよいでしょうか。

また、d_cats 用に別の列を作成したくありません。私の教授は、an_id と feline_leukemia_test_Date だけで d_cats を書くことを望んでいます。ありがとう。

4

4 に答える 4

7

外部キーもインライン化できます。

create table d_cats
( an_id                        integer     primary key references d_animals(an_id)
, feline_leukemia_test_date    date        not null
);
于 2012-11-27T03:41:48.413 に答える
7

名前付き制約を使用します。つまり、次のようになります。

create table d_cats (
   an_id                        integer     primary key
 , feline_leukemia_test_date    date        not null
 , constraint d_cats_animals_fk foreign key (an_id) references d_animals (an_id)
 );
于 2012-11-27T02:51:24.907 に答える
0

外部キーには別の名前を使用してください。

create table d_cats (
       an_id                        integer     primary key
     , feline_leukemia_test_date    date        not null
     , cats_an_id    foreign key references d_animals_(an_id)
     );
于 2012-11-27T02:35:32.380 に答える
0

d_animals テーブルと同じ列を主キーと外部キーの両方として使用する必要がある場合は、以下のステートメントを使用できます。

CREATE TABLE d_cats
(
  an_id                      INTEGER PRIMARY KEY,
  feline_leukemia_test_date  DATE NOT NULL,
  CONSTRAINT PK_d_cats_an_id PRIMARY KEY (an_id),
  CONSTRAINT FK_d_cats_an_id FOREIGN KEY (an_id) REFERENCES d_animals(an_id)
);
于 2016-03-04T15:55:34.820 に答える