- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我从另一个开发人员那里获得了一个数据库。他没有在任何表上使用 auto_incrementers。它们都有主键 ID,但他在代码中手动完成了所有递增操作。
我现在可以把它们变成 Auto_incrementers 吗?
哇,非常好,非常感谢。它在我的一张 table 上运行顺利。但是第二张表,我收到此错误...将 '.\DBNAME#sql-6c8_62259c' 重命名为 '.\DBNAME\dealer_master_events' 时出错
最佳答案
例如,这是一个具有主键但不是 AUTO_INCREMENT
的表:
mysql> CREATE TABLE foo (
id INT NOT NULL,
PRIMARY KEY (id)
);
mysql> INSERT INTO foo VALUES (1), (2), (5);
您可以MODIFY
使用AUTO_INCREMENT
选项重新定义该列:
mysql> ALTER TABLE foo MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT;
验证是否生效:
mysql> SHOW CREATE TABLE foo;
输出:
CREATE TABLE foo (
`id` INT(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
请注意,您已就地修改了列定义,而无需创建第二列并删除原始列。 PRIMARY KEY
约束不受影响,您无需在 ALTER TABLE
语句中提及。
接下来您可以测试插入是否生成新值:
mysql> INSERT INTO foo () VALUES (); -- yes this is legal syntax
mysql> SELECT * FROM foo;
输出:
+----+
| id |
+----+
| 1 |
| 2 |
| 5 |
| 6 |
+----+
4 rows in set (0.00 sec)
我在 Mac OS X 上的 MySQL 5.0.51 上对此进行了测试。
我还使用 ENGINE=InnoDB
和一个依赖表进行了测试。修改 id
列定义不会中断参照完整性。
回复您在评论中提到的错误 150,可能是与外键约束冲突。我很抱歉,在我测试它之后,我认为它会起作用。以下是一些可能有助于诊断问题的链接:
关于mysql - 在 mysql 表 auto_increment 中创建一个 ID(事后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/251479/
我正在尝试查找过去存在冲突的项目的 merge 修订。有没有比手动复制 merge 更简单的方法呢?因为我一直没能找到让 git show 只列出有冲突的文件(如果有的话)的方法。 最佳答案 一般情况
我正在用 PHP 构建一个 Web 应用程序,我已经决定(在整个过程中)以不同的语言提供它。 我的问题是: 我不想遍历模板文件中的所有 HTMl 代码来寻找我需要用动态生成的 lang 变量替换的“单
我认为我非常熟悉如何使用 .gitignore(它仍然对我排除顶级目录非常有用),但我现在发现多个 R.java 正在跟踪我的应用程序中使用的各种库中的文件,我想停止跟踪它们。 我尝试将 R.java
我从另一个开发人员那里获得了一个数据库。他没有在任何表上使用 auto_incrementers。它们都有主键 ID,但他在代码中手动完成了所有递增操作。 我现在可以把它们变成 Auto_increm
我是一名优秀的程序员,十分优秀!