您好,登錄后才能下訂單哦!
Inception SQL審核注解
1、建表語句
建表語句檢查項
表屬性的檢查項
這個表不存在
對于create table like,會檢查like的老表是不是存在。
對于create table db.table,會檢查db這個數據庫是不是存在
表名、列名、索引名的長度不大于64個字節
如果建立的是臨時表,則必須要以tmp為前綴
必須要指定建立innodb的存儲引擎(可配置)
必須要指定utf8的字符集(字符串可配置,指定支持哪些字符集)
表必須要有注釋(可配置)
表不能建立為分區表(可配置)
只能有一個自增列
索引名字不能是Primay
不支持Foreign key(可配置)
建表時,如果指定auto_increment的值不為1,報錯(可配置)
如果自增列的名字不為id,說明有可能是有意義的,MySQL這樣使用比較危險,所以報警(可配置)
列屬性的檢查項
不能設置列的字符集(可配置)
列的類型不能使用集合、枚舉、位圖類型。(可配置)
列必須要有注釋(可配置)
char長度大于20的時候需要改為varchar(長度可配置)
列的類型不能是BLOB/TEXT。(可配置)
每個列都使用not null(可配置)
如果列為BLOB/TEXT類型的,則這個列不能設置為NOT NULL。
如何是自增列,則使用無符號類型(可配置)
如果自增列,則長度必須要大于等于4個字節(可配置)
如果是timestamp類型的,則要必須指定默認值。
對于MySQL5.5版本(包含)以下的數據庫,不能同時有兩個TIMESTAMP類型的列,如果是DATETIME類型,則不能定義成DATETIME DEFAULT CURRENT_TIMESTAMP及ON UPDATE CURRENT_TIMESTAMP等語句。
每個列都需要定義默認值,除了自增列、主鍵列及大字段列之外(可配置)
不能有重復的列名
索引屬性檢查項
索引必須要有名字
不能有外鍵(可配置)
Unique索引必須要以uniq_為前綴(可配置)
普通索引必須要以idx_為前綴(可配置)
索引的列數不能超過5個(數目可以配置)
表必須要有一個主鍵(可配置)
最多有5個索引(數目可配置)
建索引時,指定的列必須存在。
索引中的列,不能重復
BLOB列不能建做KEY
索引長度不能超過766
不能有重復的索引,名字及內容
默認值檢查項
BLOB/TEXT類型的列,不能有非NULL的默認值
MySQL5.5以下(含)的版本,對于DATETIME類型的列,不能有函數NOW()的默認值。
如果設置默認值為函數,則只能是NOW()。
如果默認值為NULL,但列類型為NOT NULL,或者是主鍵列,或者定義為自增列,則報錯。
自增列不能設置默認值。
2、插入語句
插入語句檢查項
表是否存在
必須指定插入列表,也就是要對哪幾個列指定插入值,如insert into t (id,id2) values(...),(可配置)
必須指定值列表,與上面對應的列,插入的值是什么,必須要指定。
插入列列表與值列表個數相同,上面二者的個數需要相同,如果沒有指定列列表(因為可配置),則值列表長度要與表列數相同。
不為null的列,如果插入的值是null,報錯(可配置)
插入指定的列名對應的列必須是存在的。
插入指定的列列表中,同一個列不能出現多次。
插入值列表中的簡單表達式會做檢查,但具體包括什么不一一指定
3、更新、刪除語句
更新、刪除語句檢查項
表是否存在
必須有where條件(可配置)
delete語句不能有limit條件(可配置)
不能有order by語句(可配置)
影響行數大于10000條,則報警(數目可配置)
對WHERE條件這個表達式做簡單檢查,具體包括什么不一一指定
對更新列的值列表表達式做簡單檢查,具體不一一指定
對更新列對象做簡單檢查,主要檢查列是不是存在等
多表更新、刪除時,每個表必須要存在
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。