0

次のケース、表の記事、表の果物があります。両方を以下に示します

create table Article
(
    ART_ID          bigint not null auto_increment,
    ART_NAME         varchar(25) not null,
    primary key(ART_ID)
);

create table Fruit
(    
    ART_ID bigint not null,
    FRU_DES varchar(25) not null,
    Foreign Key (ART_ID) references Article(ART_ID)
);

私に関する限りは問題ありませんが、フルーツを作成するためにデータを入力したい場合、ART_ID を宣言せずにテーブルにそのオブジェクトを作成することはできませんが、auto_increment として既に宣言している場合はどうすればよいでしょうか.

DB に対して次の命令を実行できません。

insert into Fruit(FRU_DES)
values('dsd');

しかし、私はできる

insert into Fruit(ART_ID, FRU_DES)
values(1,'dsd');

しかし、このプロジェクトの後の段階で何かが省略された場合、このシナリオが原因で問題が発生する可能性があることを望んでいません。

4

2 に答える 2

0

有効な果物であると言われている外部キーを配置するとすぐに、有効な記事への参照が存在する必要があります。

ORM またはその他のコード モデルAddFruitでは、アーティクルのメソッドになります。つまり、試行する前に Art_ID がわかっています。

ストレートSQLでは、おそらく

Insert into Fruit Select Article.Art_ID,'apple' From Article Where Article.Artname = 'Still life by P Frame'

明らかにします。

于 2012-08-31T10:01:44.250 に答える
0

私があなたを正しく理解していれば、3 番目のテーブルが必要になります。

  • Article テーブルをそのまま
  • 果物テーブルが取得FRU_ID auto_incrementされ、ART_ID列が破棄されます
  • ART_ID 列と FRU_ID 列を含む ArticleFruit テーブル

これにより、ArticleFruit テーブルにレコードを追加することで Fruits を Articles にリンクすることができますが、ArticleFruit テーブルに直接リンクせずに一度データベースに Fruits を挿入することができます。

于 2012-08-31T10:06:01.570 に答える