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语句,好像还是有问题。
希望这个功能更加完善一些!