【发布时间】:2017-07-12 03:06:56
【问题描述】:
这是我的t_complaint
CREATE TABLE `t_complaint` (
`idcomplaint` int(11) NOT NULL,
`tglterima` date DEFAULT NULL,
`dept` varchar(5) DEFAULT NULL,
`pengirim` varchar(255) DEFAULT NULL,
`kontak` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`telp` varchar(255) DEFAULT NULL,
`jenis` varchar(45) DEFAULT NULL,
`uraian` text,
`uniqueid` varchar(9) DEFAULT NULL,
`responder` varchar(245) DEFAULT NULL,
`tgljawab` date DEFAULT NULL,
`jawaban` text,
`status` varchar(45) DEFAULT NULL,
`tglclose` date DEFAULT NULL,
`createddate` datetime DEFAULT NULL,
`createdby` varchar(45) DEFAULT NULL,
`modifieddate` datetime DEFAULT NULL,
`modifiedby` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是t_complaint_detail:
CREATE TABLE `t_complaint_detail` (
`no` int(11) NOT NULL,
`uniqueid` varchar(9) DEFAULT NULL,
`uploader` varchar(100) DEFAULT NULL,
`st_uploader` int(11) DEFAULT NULL,
`file_upload` text,
`original_name` text,
`status` int(11) DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- t_complaint.idcomplaint 是具有自动增量属性的主键
- t_complaint_detail.no 是具有自动增量属性的主键
- 我想通过
uniqueid连接这些表 - 我试过
ALTER TABLE t_complaint_detail ADD CONSTRAINT fk_unique FOREIGN KEY ('uniqueid') REFERENCES t_complaint('uniqueid') - 上面的查询给出了错误。错误是
#1005 - Can't create tablebsm.#sql-890_730(errno: 150 "Foreign key constraint is incorrectly formed") (Details…) -
错误中的
bsm是我的数据库(我的数据库是bsm)
【问题讨论】:
-
uniqueidvarchar(9) DEFAULT NULL,`用int替换varchar并检查 -
但是,它的值是字符串/文本。
-
uniqueid是外键吗?对吗? -
是的。但我希望这些表通过 uniqueid 连接
-
所以,这就像在两个表中连接一个外键。可能吗。表投诉中的 uniqueid 是唯一的(从不具有相同的值)。但我将 idcomplaint 分配为主键,因为它具有自动递增属性
标签: php mysql join foreign-keys primary-key