# 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\u details\u id”和“created\u by”列上,当created\u by没有引用现有的user\u details\u id时,会出现冲突。
也就是说,如果我正在用所需的详细信息创建我自己的配置文件,我的用户详细信息\u id还没有生成,因此我不知道在created \u by字段中输入什么值(理想情况下应该包含我的用户详细信息\u id)。
如果有人能指导我如何处理这样的冲突,以及是否有办法在生成user\u details\u id字段之前确定它的值,我将不胜感激。
谢谢。
2条答案
按热度按时间uujelgoq1#
您不能通过设置服务器变量来临时禁用外键检查来处理它
foreign_key_checks
```SET FOREIGN_KEY_CHECKS=0;
INSERT INTO cities userdetails(....);
SET FOREIGN_KEY_CHECKS = 1;
dldeef672#
允许created\u by接受空值似乎是解决这个问题的一个快速方法,因为这可能意味着用户是自己创建的。