MYSQL-check管理

mysql这个东西对于管理员并不友好,看起来还没有成品。就拿亲儿子workbeanch来说吧,功能也不是很齐全,速度也一般般,否则sqlyog之类的早没有什么活路了。

社区版的支持非常薄弱(商业版不太清楚)。所以建议有一定规模的团队可以自行开发这些工具(当然是空闲时间)。

市面上几个主要的工具-mysql workbeach,sqlyog,navicat各有自己的缺陷,没有一个是很好用的。

现在只能寄望于自己掌握更多一些的命令。

 

由于某些原因,给字段设置了check,结果好几个工具无法在图形界面上看到check的内容,极度垃圾,虽然这是8.0.x新增的特性。

但可以用命令查看,例如 SHOW CREATE TABLE xxxx;

 

用命令吧!(以下内容来自于 MySQL8.0添加和删除check约束_to_create的博客-CSDN博客_mysql删除check约束)

----------------------------------------------------------------------------------

a. 添加check

ALTER TABLE `表名` ADD CONSTRAINT [约束名] CHECK(约束条件) [[NOT] ENFORCED];

b.修改check

ALTER TABLE `表名` ALTER CHECK 约束名 [NOT] ENFORCED;

注:这个好像仅限于修改enforced属性,无法修改定义语句。

c.删除check

ALTER TABLE `表名` DROP CHECK 约束名;

--------------------------------------------------------------------------------

光有这三个还是不够,还必须知道哪些表有check(innodb),以及如何生成批量操作的sql:

SELECT 
      /*
      concat('alter table ',t.TABLE_SCHEMA,
      '.',t.TABLE_NAME,' alter check ',t.CONSTRAINT_NAME, 
      '(`status_code` in (0,1,2))',' ENFORCED;') as a_sql,
      */
      CONCAT('alter table ',t.TABLE_SCHEMA,
      '.',t.TABLE_NAME,' drop check ',t.CONSTRAINT_NAME, ';') AS d_sql
       FROM TABLE_CONSTRAINTS t,
      CHECK_CONSTRAINTS c
       WHERE t.table_schema='ps' AND t.constraint_type='CHECK'
       AND c.CONSTRAINT_SCHEMA=t.TABLE_SCHEMA
       AND c.CONSTRAINT_NAME=t.CONSTRAINT_NAME ;     

 

如果想直接通过alter check语法修改定义check语句,好像还是有问题。

希望这个功能更加完善一些!

 

posted @ 2022-04-24 10:57  正在战斗中  阅读(156)  评论(0编辑  收藏  举报