mysql - 外键引用同一张表中的主键 Mysql

标签 mysql sql phpmyadmin foreign-keys primary-key

# Sql to create userdetails table:
CREATE TABLE `userdetails` (
 `user_details_id` int(3) unsigned NOT NULL AUTO_INCREMENT,
 `user_group_id` int(1) unsigned NOT NULL,
 `name` varchar(50) NOT NULL,
 `email_id` varchar(50),
 `password` varchar(50) NOT NULL,
 `mobile_no` varchar(10) NOT NULL,
 `company_id` int(3) unsigned,
 `vehicle_id` varchar(10),
 `date_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `date_updated` datetime NOT NULL,
 `created_by` int(3) unsigned NOT NULL,
 `status` enum('0','1') NOT NULL DEFAULT '0',
 PRIMARY KEY (`user_details_id`),
 UNIQUE KEY `email_id` (`email_id`),
 FOREIGN KEY (`user_group_id`) REFERENCES `usergroups` (`user_group_id`),
 FOREIGN KEY (`company_id`) REFERENCES `companies` (`company_id`),
 FOREIGN KEY (`created_by`) REFERENCES `userdetails` (`user_details_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

关注 'user_details_id' 和 'created_by' 列,当 created_by 不引用现有的 user_details_id 时会出现冲突。

意思是,如果我使用所需的详细信息创建自己的个人资料,我的 user_details_id 尚未生成,因此我不知道将什么值输入到 created_by 字段(理想情况下应该包含我的 user_details_id)。

如果有人能在正确的方向上指导我如何处理此类冲突,以及是否有办法在生成 user_details_id 字段之前确定它的值,我将不胜感激。

谢谢。

最佳答案

您无法通过设置服务器变量 foreign_key_checks 暂时禁用外键检查来处理它

SET FOREIGN_KEY_CHECKS=0;

INSERT INTO cities userdetails(....);

SET FOREIGN_KEY_CHECKS = 1;

关于mysql - 外键引用同一张表中的主键 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50795730/

相关文章:

mysql - 相关查询的 EC(内部)计算

php - 如何将codeigniter事件记录放入if elseif语句中

php - 输入提交后生成并下载xml文件(php和mysql)-JPK

mysql - 两个主键

php - 从第二个 MySQL 表获取信息

php - MySQL 查询在 phpmyadmin 中有效,但在网站上的 php 代码中无效

php - 删除注释时出现奇怪的 PHP 错误

php mysql日期/时间问题

php - 使用 MySQL 从 WordPress post_content 中提取 URL

php - 使用 group by 子句对两列数据进行分组