gpt4 book ai didi

mysql - 创建复合外键

转载 作者:行者123 更新时间:2023-11-30 01:14:59 26 4
gpt4 key购买 nike

我在 Mysql 中使用这个脚本:

CONSTRAINT `customer_contact_geolocation_id_fk` FOREIGN  KEY(`customer_contact_geolocation`, `customer_contact_company_id`) 
REFERENCES `geolocation` (`geolocation_id`, `geolocation_company_id`) ON DELETE NO ACTION
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

这是创建表语句的一部分。当我导入它时,它没有显示错误。但是当我使用工作台检查表时,未创建外键。另外,它在我的应用程序中不起作用。我是否必须更改某些设置才能使该复合 fk 工作?

我将添加一个更简单的脚本:

DROP TABLE IF EXISTS `companies`;
CREATE TABLE `companies` (
`company_id` int(11) NOT NULL AUTO_INCREMENT,
`company_name` varchar(200) NOT NULL,
`company_address` varchar(200) NOT NULL,
`company_tax_id` varchar(200) NOT NULL,
`company_minimun_margin` float NOT NULL,
`company_currency` varchar(20) NOT NULL,
`company_fiscal_currency` varchar(20) NOT NULL,
`company_max_rows` int(11) DEFAULT NULL,
`company_max_file_size` int(11) DEFAULT NULL,
PRIMARY KEY (`company_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `geolocation`;

CREATE TABLE `geolocation` (
`geolocation_id` varchar(20) NOT NULL,
`geolocation_company_id` int(11) NOT NULL,
`geolocation_name` varchar(200) NOT NULL,
`geolocation_parent` varchar(20) DEFAULT NULL,
`geolocation_child` varchar(1) NOT NULL,
PRIMARY KEY (`geolocation_id`,`geolocation_company_id`),
KEY `com_id_dem_com_id_fk` (`geolocation_company_id`),
CONSTRAINT `com_id_dem_com_id_fk` FOREIGN KEY (`geolocation_company_id`) REFERENCES `companies` (`company_id`) ON DELETE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果我使用下一个 fk,该 fk 不会显示在工作台上(它显示下一个结果:

     10:18:43   ALTER TABLE `geolocation` ADD FOREIGN KEY (`geolocation_parent`, `geolocation_company_id`) REFERENCES `geolocation` (`geolocation_id`, `geolocation_company_id`)    0 row(s) affected Records: 0  Duplicates: 0  Warnings: 0    0.136 sec

)

ALTER TABLE `geolocation`
ADD FOREIGN KEY (`geolocation_parent`, `geolocation_company_id`)
REFERENCES `geolocation` (`geolocation_id`, `geolocation_company_id`);

如果我改成这个fk:

ALTER TABLE `geolocation`
ADD FOREIGN KEY (`geolocation_parent`)
REFERENCES `geolocation` (`geolocation_id`);

一切都很好,但我需要复合 fk。

提前致谢。

问候,丹尼尔

最佳答案

问题不在于 mysql,而在于 Mysql Workbench。工作台不会显示 fk,但它存在。我尝试了蟾蜍,它显示了这一点。我还使用了“SHOW CREATE TABLE tbl_name”,它显示了所需的输出。

感谢大家的帮助。

问候,丹尼尔

关于mysql - 创建复合外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19152331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com