启用字段not null检查,设置为true后,会要求字段设置为not null
例子:
address varchar(128) not null default '' comment '地址'
时间类型字段允许设置为null。例如一些业务字段需要设置为允许为null,比如部分业务的时间字段不希望实现magic
例子:
finish_at datetime default null comment '完成时间'
- text
- blob
- json
例子
remark text comment '备注'
建表时必须要有创建时间
和更新时间
, 该如何实现呢
启用审计类型的字段, 必须定义2个审计字段,要求
- DEFAULT CURRENT_TIMESTAMP
- DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
例子
字段名和注释名不做要求
`UPDATED_AT` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
`CREATED_AT` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
一些特殊的场景,研发希望部分表不能提交DDL和DML工单,场景举例:
用户业务库:
- 库:db_users
- 表:tbl_users
- 类型:主表
- 业务读写该表
支付业务库:
- 库:db_pay
- 表:tbl_users
- 类型:备表
- 业务只读该表,数据和表结构从主表同步
上述场景下,我们可以配置db_pay.tbl_users禁止语法审核,可以保证对db_pay.tbl_users的DDL和DML操作无法提交,保证数据一致性。
"DISABLE_AUDIT_DDL_TABLES": [
{
"DB": "db_pay",
"Reason": "限制审核和提交,请联系支付业务研发",
"Tables": [
"tbl_users"
]
},
],
"DISABLE_AUDIT_DML_TABLES": [
{
"DB": "db_pay",
"Reason": "限制审核和提交,请联系支付业务研发",
"Tables": [
"tbl_users"
]
}
],
tidb默认不支持数据类型变更,但是允许同一类型,不同长度变更且变更后的长度必须大于变更前的长度 允许操作: tinyint-> int、int->bigint、char->varchar ... 不允许操作:int -> tinyint、varchar -> char ...
- ENABLE_COLUMN_TYPE_CHANGE
- ENABLE_COLUMN_TYPE_CHANGE_COMPATIBLE
仅当参数ENABLE_COLUMN_TYPE_CHANGE=false时,ENABLE_COLUMN_TYPE_CHANGE_COMPATIBLE才生效
不允许修改数据类型:char -> int 、tinyint -> enum ... 允许操作:tinyint-> int、char->varchar ...
ENABLE_COLUMN_TYPE_CHANGE: false
ENABLE_COLUMN_TYPE_CHANGE_COMPATIBLE: true