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)
);

现在就我而言没关系,但是当我想输入一些数据以创建 Fruit 时,我无法在不声明 ART_ID 的情况下在表中创建该对象,但是如果我已经将其声明为 auto_increment 怎么可能.

我无法对我的数据库执行以下指令,

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

但是我可以

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

但是我不希望这种情况出现,因为如果在项目后期的某个时间省略某些内容,它可能会导致一些问题。

4

2 回答 2

0

如果我理解正确,您将需要第三张表:

  • 您的文章表原样
  • 您的水果表得到 aFRU_ID auto_increment并且该ART_ID列被丢弃
  • 包含 ART_ID 和 FRU_ID 列的 ArticleFruit 表

这将允许您在数据库中插入 Fruits 一次,而无需将其直接链接到文章,同时您仍然可以通过将记录添加到 ArticleFruit 表来将 Fruits 链接到文章。

于 2012-08-31T10:06:01.570 回答
0

只要你把外键放在你说是一个有效的水果上,就必须有一个有效文章的引用。

在 ORM 或其他代码模型AddFruit中将是 Article 上的方法,即 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 回答