MariaDB外键问题

时间:2015-12-30 16:53:37

标签: mysql sql foreign-keys mariadb

因为我必须创建/定义数据库,所以忽略了我的理解。基本上,我有一个包含几个字段的表,其中一个是散列,它引用具有相同散列的另一个表,以及散列值。我认为问题在于我使用外键引用辅助表中的非主键。所以我的问题是:我如何建立这种关系?以下是创建我的问题的最低示例:

-- first table, imagine this as the hash value (should I remove the r_id,
-- and make the r_hash a unique & primary key?)
create table rx(
 r_id int(10) auto_increment primary key,
 r_hash varchar(175) default null,
 r_val  varchar(175) default null
);

create table cx(
 c_id int(10) auto_increment primary key,
 c_name varchar(175) default null,
 querystr varchar(175) default null,
 r_c_hash varchar(175) default null,
 constraint r_fk foreign key(r_c_hash) references rx(r_hash)
);

而且我仍然无法解决的经典错误:

ERROR 1005 (HY000): Can't create table 'test2.cx' (errno: 150)

编辑:

为了澄清,rx的示例行将如下所示:

1 |  asdkjIOFJE93fijflskf | anexamplehashvalue

来自cx的示例行可能如下所示:

1 | name_of_file | queryString=yes&1=3 | asdkjIOFJE93fijflskf 

正如您所看到的,哈希值匹配,这就是我需要的所有内容。我是否使用哈希作为PK重新创建rx表并使其唯一?或者我可以保持表格的结构吗?

1 个答案:

答案 0 :(得分:0)

为什么不引用主键?这确实是主键的用途。

如果你真的需要使用不同的密钥,那么你应该在其上定义一个唯一的索引:

tf.concat()