免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5024 | 回复: 11
打印 上一主题 下一主题

mysql设置不了外键? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-16 16:19 |只看该作者 |倒序浏览
有2各表,一个主表,设置了主健,另外一个从属表,如何设置外健?用什么命令?我新建从属表的时候用references关键字,好像不行啊,请教了

我用以下命令:
create tables 主表名字 (aid char(10) primary key,aname char(10));

create table 从属表名字 (bid char(10) references 主表名字,bname char(10));

但是不行啊

论坛徽章:
0
2 [报告]
发表于 2006-01-16 16:25 |只看该作者
你用什么样的表类型?只有InnoDB支持。

论坛徽章:
0
3 [报告]
发表于 2006-01-16 17:36 |只看该作者
create table 从属表名字 (bid char(10) CONSTRAINT  FOREIGN KEY  fk_id references 主表名字,bname char(10));

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
[table_options] [select_statement]

or

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name LIKE old_table_name;

create_definition:
  col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
            [PRIMARY KEY] [reference_definition]
  or    PRIMARY KEY (index_col_name,...)
  or    KEY [index_name] (index_col_name,...)
  or    INDEX [index_name] (index_col_name,...)
  or    UNIQUE [INDEX] [index_name] (index_col_name,...)
  or    FULLTEXT [INDEX] [index_name] (index_col_name,...)
  or    [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
            [reference_definition]
  or    CHECK (expr)

type:
        TINYINT[(length)] [UNSIGNED] [ZEROFILL]
  or    SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
  or    MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
  or    INT[(length)] [UNSIGNED] [ZEROFILL]
  or    INTEGER[(length)] [UNSIGNED] [ZEROFILL]
  or    BIGINT[(length)] [UNSIGNED] [ZEROFILL]
  or    REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
  or    DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
  or    FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
  or    DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
  or    NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
  or    CHAR(length) [BINARY]
  or    VARCHAR(length) [BINARY]
  or    DATE
  or    TIME
  or    TIMESTAMP
  or    DATETIME
  or    TINYBLOB
  or    BLOB
  or    MEDIUMBLOB
  or    LONGBLOB
  or    TINYTEXT
  or    TEXT
  or    MEDIUMTEXT
  or    LONGTEXT
  or    ENUM(value1,value2,value3,...)
  or    SET(value1,value2,value3,...)

index_col_name:
        col_name [(length)]

reference_definition:
        REFERENCES tbl_name [(index_col_name,...)]
                   [MATCH FULL | MATCH PARTIAL]
                   [ON DELETE reference_option]
                   [ON UPDATE reference_option]

reference_option:
        RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

table_options:
        TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
or        AUTO_INCREMENT = #
or        AVG_ROW_LENGTH = #
or        CHECKSUM = {0 | 1}
or        COMMENT = "string"
or        MAX_ROWS = #
or        MIN_ROWS = #
or        PACK_KEYS = {0 | 1 | DEFAULT}
or        PASSWORD = "string"
or        DELAY_KEY_WRITE = {0 | 1}
or      ROW_FORMAT= { default | dynamic | fixed | compressed }
or        RAID_TYPE= {1 | STRIPED | RAID0 } RAID_CHUNKS=#  RAID_CHUNKSIZE=#
or        UNION = (table_name,[table_name...])
or        INSERT_METHOD= {NO | FIRST | LAST }
or      DATA DIRECTORY="absolute path to directory"
or      INDEX DIRECTORY="absolute path to directory"

select_statement:
        [IGNORE | REPLACE] SELECT ...  (Some legal select statement)

论坛徽章:
0
4 [报告]
发表于 2006-01-17 10:29 |只看该作者
你数据库什么版本?

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-03-12 06:20:00
5 [报告]
发表于 2006-01-17 16:35 |只看该作者
存储引擎必需是InnoDB才可以使用外键

论坛徽章:
0
6 [报告]
发表于 2006-01-18 13:16 |只看该作者
我用的是redhat linux版本下的mysql

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-03-12 06:20:00
7 [报告]
发表于 2006-01-19 10:22 |只看该作者
create tables 主表名字 (aid char(10) primary key,aname char(10))ENGINE=InnoDB;

create table 从属表名字 (bid char(10) references 主表名字,bname char(10))ENGINE=InnoDB;

论坛徽章:
0
8 [报告]
发表于 2006-01-19 17:46 |只看该作者

mysql5.0有能管理外键,存储过程等东西的工具么?

用语句去管理不现实啊,多了咋办?

论坛徽章:
0
9 [报告]
发表于 2006-01-20 14:11 |只看该作者
原帖由 qlks 于 2006-1-19 10:22 发表
create tables 主表名字 (aid char(10) primary key,aname char(10))ENGINE=InnoDB;

create table 从属表名字 (bid char(10) references 主表名字,bname char(10))ENGINE=InnoDB;




这个语句提示出错

论坛徽章:
0
10 [报告]
发表于 2006-01-20 14:19 |只看该作者
create table b(bid char(10) foreign key fk_id references a,bname char(10));

这句提示错误
去掉foreign key fk_id 就可以,到底是怎么回事啊???
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP