mysql - 插入两个表之间自动递增不重置

标签 mysql sql

我有这个脚本:

#create departments table
CREATE TABLE `departments` (
  `department_id` int(11) NOT NULL AUTO_INCREMENT,
  `department_name` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`department_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

#inserts - departments table
INSERT INTO `departments`(`department_name`)VALUES("Parks and recreation");
INSERT INTO `departments`(`department_name`)VALUES("Portable immediate treatment");
INSERT INTO `departments`(`department_name`)VALUES("Veterinary");
INSERT INTO `departments`(`department_name`)VALUES("Gardening");
INSERT INTO `departments`(`department_name`)VALUES("Business Registration");
INSERT INTO `departments`(`department_name`)VALUES("Environment");
INSERT INTO `departments`(`department_name`)VALUES("Sanitation");
INSERT INTO `departments`(`department_name`)VALUES("Recycling");
INSERT INTO `departments`(`department_name`)VALUES("all");

#create departments_in_langueage table
CREATE TABLE `departments_in_language` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `department_id` int(11) DEFAULT NULL,
  `language` varchar(45) DEFAULT NULL,
  `description` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `departments_in_language_department_id_idx` (`department_id`),
  CONSTRAINT `departments_in_language_department_id` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

#inserts - departments_in_language table
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("1","hebrew","חזות העיר");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("2","hebrew","ניידת טיפול מיידי");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("3","hebrew","ווטרינריה");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("4","hebrew","גינון");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("5","hebrew","רישוי עסקים");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("6","hebrew","איכות הסביבה");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("7","hebrew","תברואה");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("8","hebrew","מיחזור");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("9","hebrew","כללי");

Departments_in_language 的字段名为“department_id”(外键)。 问题: 当我运行这个脚本时,我得到了一些错误:

Cannot add or update a child row: a foreign key constraint fails (`teres`.`departments_in_language`, CONSTRAINT `departments_in_language_department_id` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`) ON DELETE NO ACTION ON UPDATE NO )

我看到department_in_language的Id不是从1开始的, 这意味着“自动”的计数器不会在插入之间重置; 这就是错误的原因。 我能做什么?

最佳答案

您的表创建查询将 AUTO_INCREMENT 设置为 10 AND 9。它应该设置为 1。

#create departments table
CREATE TABLE `departments` (
  [...]
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

#create departments_in_langueage table
CREATE TABLE `departments_in_language` (
  [...]
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

关于mysql - 插入两个表之间自动递增不重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37993863/

相关文章:

php - 仅当字符串不为空时才执行查询

php - 从日期范围之间的 mysql 表列中选择

sql - 如何比较同一张表的两条记录?

php - Add DROP SYNTAX in X-Cloner of Wordpress 是什么意思?

PHP/MySQLi 类似乎不起作用

mysql - 在 SQL 查询中显示行或 NULL

mysql - 如何在一列SQL中存储多个值

添加额外约束时,MySQL 停止使用索引

sql - 如何在 SQL Server 中转置查询结果(行到列)

sql - 冒号 ":"在 SQL 查询中起什么作用?