mysql关于外键设置

来源:互联网 发布:北京80坐标系数据 编辑:程序博客网 时间:2024/05/16 04:03

今天在设计酒店管理系统时走了很多弯路

1.mysql使用的默认数据库引擎MyISAM并不能很好支持外键,事务等操作,外键总是设置不上,需要将引擎改为InnoDB,这个是最完善支持各种sql操作的。(ENGINE=InnoDB)

2.在最初设计数据库是就应当把所有关系想好,确认关系正确再去生成数据库,今天就是外键设置的不对,整个数据库的逻辑都错了,只好删掉数据库,用power designer重新设计数据库。

3.关于外键

create table roominfo
(
   r_code               char(4) not null,
   r_type               char(10) not null,
   r_price              float(8,2) not null,
   r_iflive             bool not null,
   r_floor              int not null,
   r_notes              longtext,
   primary key (r_code, r_type)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

create table orderinfo
(
   od_code              char(15) not null,
   r_code               char(4),
   r_type               char(10),
   od_intime            datetime not null,
   od_outtime           datetime not null,
   od_pay               float(8,2) not null,
   od_hphone            char(11),
   od_notes             longtext,
   primary key (od_code)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

alter table orderinfo add constraint FK_Relationship_1 foreign key (r_code, r_type)
      references roominfo (r_code, r_type) on delete cascade on update cascade;

在orderinfo表中设置外键r_code, r_type(属于表roominfo)

在添加信息时,应该先添加roominfo的信息,再添加orderinfo,不然直接添加orderinfo操作不会被允许。

原创粉丝点击