分类 mysql 下的文章

我们都知道mysql要实现复制,使用insert into table_name select * from table_name语句即可.有时候只要更改其中一个字段, 但却要写出所有的字段, 这就很麻烦.今天就分享下省力的方式.

CREATE table temporary_table AS SELECT * FROM original_table WHERE Event_ID="155";
UPDATE temporary_table SET Event_ID="120";
ALTER TABLE temporary_table MODIFY <auto_inc_not_null_field> INT;//更改主键为普通int类型
UPDATE temporary_table SET ID=NULL;
INSERT INTO original_table SELECT * FROM temporary_table;

参考链接: https://stackoverflow.com/a/15344327/8714749

答案为不能 原因很简单,如果你知道START TRANSACTION(或者他的同义语句)会触发一个隐式提交(commit), 应该就容易理解为什么没办法事务嵌套了.因为当你用START TRANSACTION开启一个子事务时,这就会触发一个隐式commit,把上一个事务给提交了.
同理,在使用事务时,也要注意,还有其他很多语句会导致事务隐式commit.具体详细见官网文档: https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html

前言: 网上关于一张mysql表最多可以创建多少个索引?基本就是两种答案,一种是不限制,一种是16列, 我认为16的由来应该网上传着传着给扭曲, 因为mysql的单个索引最多能包括16列,但是这个是一个索引包含几列的答案而不是一张可以建多少个索引.真的是误导人啊! 为此我一顿好找终于在官网找到了权威答案, 现将mysql表的一些限制做一个总结, 希望能帮到对此有困惑的朋友们, 有用就赞下啦 \~_~
因为mysql的一些限制跟具体存储引擎有关,为此以下只列出我们最常用的innoDB和myisam,其他存储引擎的具体限制可以去官网找.
  • innoDB: 最多创建1017列, 最多64个二级索引, 单个索引最多包含16列, 索引最大长度767字节(其实行格式为REDUNDANT,COMPACT最高为767字节,但行格式为DYNAMIC,COMPRESSED最高可达为3072字节), 行大小最大65536字节
  • mysiam: 最多4096列, 最多64个索引, 单个索引最多包含16列, 索引最大长度1000字节, 行大小最大65536字节
以上都整理自mysql官方文档,有兴趣可以自己去看看