为MySQL中的列添加唯一性

时间:2012-08-31 09:49:10

标签: mysql

我有以下案例,表格和表格水果。两者都在下面表示

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

但是我不希望这种情况导致如果在该项目的后期阶段省略某些事情可能会导致一些问题。

2 个答案:

答案 0 :(得分:0)

只要您将外键放在您说的有效水果上,就必须提及有效的文章。

在ORM或其他代码模型中,AddFruit将成为文章的一种方法,即在您尝试之前已知Art_ID。

在直接sql中,也许

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

明确表示。

答案 1 :(得分:0)

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

  • 你的文章表是
  • 您的水果表获得FRU_ID auto_incrementART_ID列被丢弃
  • 包含ART_ID和FRU_ID列的ArticleFruit表

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