跳到主要内容

对象操作

信息

数据库对象的操作通常指的是对数据库中的各种对象的增、删、改等行为。这些操作包括但不限于对表、视图、索引、存储过程、触发器等对象的管理。某些针对数据库对象的修改可能会影响现有应用程序的兼容性,需要重新设计索引和查询。在高并发环境下,结构修改可能会暂时影响服务可用性。

PawSQL审核规则体系中对象操作主要是捕获这其中可能对数据库带来负面影响的操作,并提供警示信息。PawSQL审核规则体系中对象操作的规则集如下:

禁止删除索引中的列

英文名: DroppingColumnsUsedInIndexDisallowed

规则描述: 禁止删除被索引使用的列,因为这可能会导致索引无效和数据完整性问题。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE DROP COLUMN

触发条件: 删除了被索引使用的列。

可配置:

支持的数据库类型: 所有 (ALL)

禁止为列新增非空约束

英文名: ModifyingColumnAddNotNullDisallowed

规则描述: 禁止为已有数据的列新增非空(NOT NULL)约束,因为这可能会导致数据插入错误。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE MODIFY COLUMN

触发条件: 为已有数据的列新增非空约束。

可配置:

支持的数据库类型: 所有 (ALL)

禁止为列新增默认值

英文名: ModifyingColumnAddDefaultDisallowed

规则描述: 禁止为列新增默认值,特别是在列中已有数据的情况下,以避免数据不一致。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE MODIFY COLUMN

触发条件: 为列新增默认值。

可配置:

支持的数据库类型: 所有 (ALL)

禁止为列修改默认值

英文名: ModifyingColumnChangeDefaultDisallowed

规则描述: 禁止修改列的默认值,以避免数据插入时的不确定性。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE MODIFY COLUMN

触发条件: 修改列的默认值。

可配置:

支持的数据库类型: 所有 (ALL)

禁止新增有默认值的列

英文名: AddingColumnsWithDefaultDisallowed

规则描述: 禁止添加带有默认值的列,以避免数据插入时的潜在问题。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE ADD COLUMN

触发条件: 新增的列带有默认值。

可配置:

支持的数据库类型: 所有 (ALL)

添加CHECK约束时需添加NO VALID

英文名: AddCheckConstraintShouldBeDeferred

规则描述: 当添加CHECK约束时,应指定为NO VALID,以避免立即验证现有数据而导致的性能问题。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE ADD CONSTRAINT

触发条件: 添加CHECK约束时未指定为NO VALID。

可配置:

支持的数据库类型: 所有 (ALL)

创建约束前提前创建相关的索引

英文名: CreateIndexBeforeConstraint

规则描述: 在创建约束之前,应先创建相关的索引,以提高约束检查的效率。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE ADD CONSTRAINT

触发条件: 在创建约束之前未创建相关索引。

可配置:

支持的数据库类型: 所有 (ALL)

禁止更新索引中的列

英文名: UpdatingColumnsUsedInIndexDisallowed

规则描述: 禁止更新被索引使用的列,因为这可能会导致索引无效和数据不一致。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE MODIFY COLUMN

触发条件: 更新了被索引使用的列。

可配置:

支持的数据库类型: 所有 (ALL)

建议使用在线模式创建索引

英文名: CreateIndexUsingOnlineMode

规则描述: 建议在创建索引时使用在线模式,以减少对数据库操作的影响。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 未使用在线模式创建索引。

可配置:

支持的数据库类型: PostgreSQL/Oracle/openGauss

禁止删除索引

英文名: DroppingIndexDisallowed

规则描述: 禁止删除索引,因为索引对于查询性能至关重要。

预警级别: 警告 (Warning)

审查对象: DROP INDEX

触发条件: 删除了索引。

可配置:

支持的数据库类型: 所有 (ALL)

禁止索引创建时指定collation

英文名: Collation4IndexDisallowed

规则描述: 禁止在创建索引时指定排序规则(collation),因为这可能会影响索引的性能和查询结果的一致性。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 在创建索引时指定了排序规则。

可配置:

支持的数据库类型: 所有 (ALL)

禁止修改字段名

英文名: ChangingColumnNameDisallowed

规则描述: 禁止修改字段名,因为这可能会破坏依赖于该字段的应用程序逻辑和查询。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE RENAME COLUMN

触发条件: 修改了字段名。

可配置:

支持的数据库类型: 所有 (ALL)

禁止修改列的数据类型

英文名: ChangingColumnTypeDisallowed

规则描述: 禁止修改列的数据类型,因为这可能会导致数据丢失或不一致。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE MODIFY COLUMN

触发条件: 修改了列的数据类型。

可配置:

支持的数据库类型: 所有 (ALL)

禁止修改降低字段长度

英文名: ShortenDataTypeLengthDisallowed

规则描述: 禁止缩短字段的长度,因为这可能会导致数据截断。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE MODIFY COLUMN

触发条件: 缩短了字段的长度。

可配置:

支持的数据库类型: 所有 (ALL)

禁止修改降低字段精度

英文名: DecreasingPrecisionDisallowed

规则描述: 禁止降低字段的精度,因为这可能会导致数据精度损失。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE MODIFY COLUMN

触发条件: 降低了字段的精度。

可配置:

支持的数据库类型: 所有 (ALL)

禁止为列表中的列设置非空默认值

英文名: LargeObjectDefaultNonNullDisallowed

规则描述: 禁止为BLOB、CLOB、TEXT等大对象类型的列设置非空默认值,因为这可能会导致性能问题和存储空间的浪费。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN

触发条件: 为大对象类型的列设置了非空默认值。

可配置:

案例: 表达式可以配置为 JSON,BJSON,XML,BLOB, CLOB,TEXT,表示禁止为这些类型的列设置非空默认值。

支持的数据库类型: 所有 (ALL)

非列表中的列应设置非空默认值

英文名: NonNullDefaultValue4NormalColumnsRequired

规则描述: 对于非大对象类型的列,应设置非空默认值,以确保数据的完整性。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN

触发条件: 非大对象类型的列未设置非空默认值。

可配置:

案例: 表达式可以配置为 JSON,BJSON,XML,BLOB, CLOB,TEXT,表示除了这些类型的列之外,其他列应设置非空默认值。

支持的数据库类型: 所有 (ALL)

禁止为列表中的列设置非空约束

英文名: NonNullConstraint4ColumnsInListDisallowed

规则描述: 禁止为BLOB、CLOB、TEXT等大对象类型的列设置非空约束,因为这可能会导致性能问题和数据插入错误。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE MODIFY COLUMN

触发条件: 为大对象类型的列设置了非空约束。

可配置:

案例: 表达式可以配置为 JSON,BJSON,XML,BLOB, CLOB,TEXT,表示禁止为这些类型的列设置非空约束。

支持的数据库类型: 所有 (ALL)

禁止删除表/视图

英文名: DropTable/ViewDisallowed

规则描述: 禁止删除表或视图,以防止数据丢失和应用程序中断。

预警级别: 警告 (Warning)

审查对象: DROP TABLE, DROP VIEW

触发条件: 删除了表或视图。

可配置:

支持的数据库类型: 所有 (ALL)

禁止删除字段

英文名: DroppingColumnsDisallowed

规则描述: 禁止删除表中的字段,以防止数据丢失和应用程序中断。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE DROP COLUMN

触发条件: 删除了表中的字段。

可配置:

支持的数据库类型: 所有 (ALL)

只能删除指定命名规范的表和视图

英文名: DropTable/ViewOnlyWithConversion

规则描述: 此规则限制只能删除符合特定命名规范的表和视图,这有助于保持数据库结构的一致性和可维护性。

预警级别: 警告 (Warning)

审查对象: DROP TABLE, DROP VIEW

触发条件: 删除的表或视图名称不符合指定的命名规范(例如,以_del$结尾)。

可配置:

案例: 表达式可以配置为正则表达式,如.*_del$,表示只允许删除以_del结尾的表或视图。

支持的数据库类型: 所有 (ALL)

只能删除指定命名规范的列

英文名: DropColumnsOnlyWithConversion

规则描述: 类似于RuleCode TableR083,此规则限制只能删除符合特定命名规范的列。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE DROP COLUMN

触发条件: 删除的列名称不符合指定的命名规范。

可配置:

案例: 表达式可以配置为正则表达式,如.*_del$,表示只允许删除以_del结尾的列。

支持的数据库类型: 所有 (ALL)

创建表/视图/索引时需指定IF NOT EXISTS

英文名: IfNotExists4CreateObjectsRequired

规则描述: 在创建表、视图或索引时,应使用IF NOT EXISTS语句,以避免因对象已存在而导致的错误。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, CREATE VIEW, CREATE INDEX

触发条件: 创建操作未使用IF NOT EXISTS语句。

可配置:

支持的数据库类型: 所有 (ALL)

删除表/视图/索引时需指定IF EXISTS

英文名: IfExists4AlterDropObjectsRequired

规则描述: 在删除表、视图或索引时,应使用IF EXISTS语句,以避免因对象不存在而导致的错误。

预警级别: 警告 (Warning)

审查对象: DROP TABLE, DROP VIEW, DROP INDEX

触发条件: 删除操作未使用IF EXISTS语句。

可配置:

支持的数据库类型: 所有 (ALL)

禁止修改表的默认字符集

英文名: ModifyTableCharSetDisallowed

规则描述: 禁止修改表的默认字符集,以避免数据转换问题和潜在的数据损坏。

预警级别: 警告 (Warning)

审查对象: ALTER TABLE MODIFY COLUMN

触发条件: 修改表的默认字符集。

可配置:

支持的数据库类型: MySQL