因为我必须创建/定义数据库,所以忽略了我的理解。基本上,我有一个包含几个字段的表,其中一个是散列,它引用具有相同散列的另一个表,以及散列值。我认为问题在于我使用外键引用辅助表中的非主键。所以我的问题是:我如何建立这种关系?以下是创建我的问题的最低示例:
-- 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表并使其唯一?或者我可以保持表格的结构吗?
答案 0 :(得分:0)
为什么不引用主键?这确实是主键的用途。
如果你真的需要使用不同的密钥,那么你应该在其上定义一个唯一的索引:
tf.concat()