久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

MySQL表約束全解析:從NOT NULL到外鍵的實(shí)戰(zhàn)指南

MySQL表約束全解析:從NOT NULL到外鍵的實(shí)戰(zhàn)指南 上周處理了一個(gè)線上事故模擬訂單表里同一筆訂單號(hào)出現(xiàn)了三次金額三成是 NULL狀態(tài)字段五六個(gè)寫法并存。排查之后發(fā)現(xiàn)建表語(yǔ)句里除了一個(gè)自增主鍵其他所有字段全靠應(yīng)用層自覺(jué)。那一刻我特別想感慨MySQL 的表約束不是教科書考點(diǎn)而是生產(chǎn)環(huán)境里數(shù)據(jù)質(zhì)量的最后一道閘門。這篇文章我想把 MySQL 的表約束徹底講透?,F(xiàn)有六種約束——NOT NULL非空、DEFAULT默認(rèn)值、UNIQUE唯一、PRIMARY KEY主鍵、CHECK檢查、FOREIGN KEY外鍵——分別解決什么問(wèn)題、怎么寫、有什么版本差異和隱藏坑以及表已經(jīng)上線之后補(bǔ)約束該怎么操作都會(huì)覆蓋到。適合剛把增刪改查跑順、準(zhǔn)備設(shè)計(jì)真實(shí)表結(jié)構(gòu)的開(kāi)發(fā)者也適合被老系統(tǒng)的臟數(shù)據(jù)折磨過(guò)一遍又一遍的運(yùn)維和開(kāi)發(fā)。1. 約束不是附加功能它是數(shù)據(jù)的守門員1.1 一段沒(méi)有約束的臟數(shù)據(jù)現(xiàn)場(chǎng)先還原一個(gè)我見(jiàn)過(guò)很多次的場(chǎng)景。某項(xiàng)目的訂單表order_no 允許為 NULL于是有人直接插入了一條沒(méi)有訂單號(hào)的記錄。起初沒(méi)什么影響等到對(duì)賬、導(dǎo)出、和支付系統(tǒng)做回調(diào)匹配的時(shí)候這條 NULL 記錄讓所有 join 和 count 全對(duì)不上前端顯示undefined客服后臺(tái)一片問(wèn)號(hào)。這不是程序 bug而是表結(jié)構(gòu)打一開(kāi)始就沒(méi)攔住非法輸入。再看另一個(gè)經(jīng)典場(chǎng)景訂單表里的 user_id 沒(méi)有外鍵某天運(yùn)營(yíng)在后臺(tái)誤刪了一個(gè)測(cè)試用戶這個(gè)用戶名下幾十條訂單全部變成了孤兒數(shù)據(jù)。業(yè)務(wù)查詢用戶訂單時(shí)自然少了一截但你在數(shù)據(jù)庫(kù)里怎么數(shù)都數(shù)不出問(wèn)題因?yàn)橛唵芜€在只是關(guān)聯(lián)斷了。數(shù)據(jù)不一致的這種臟比字段為 NULL 更隱蔽、更難排查。還有狀態(tài)字段。沒(méi)有 CHECK 約束的時(shí)候status 今天寫 paid明天寫 PAID后天寫 已支付統(tǒng)計(jì)報(bào)表里 WHERE status paid 永遠(yuǎn)比實(shí)際少幾行還得寫一堆 CASE WHEN 來(lái)兜底。這類問(wèn)題不是在某個(gè)時(shí)間點(diǎn)突然爆雷而是持續(xù)性地污染統(tǒng)計(jì)口徑和分析結(jié)論。這些例子說(shuō)明一個(gè)道理約束不是給開(kāi)發(fā)添麻煩。數(shù)據(jù)庫(kù)是數(shù)據(jù)落地的最后執(zhí)行者應(yīng)用層校驗(yàn)再嚴(yán)也架不住漏網(wǎng)之魚、臨時(shí)腳本、運(yùn)營(yíng)手工改庫(kù)。把規(guī)則寫在表結(jié)構(gòu)里等于讓數(shù)據(jù)庫(kù)替每個(gè)人把關(guān)。1.2 MySQL 的六種約束速覽MySQL 的約束可以分成兩類一類管單個(gè)字段的值合不合法另一類管字段之間、表與表之間的關(guān)系對(duì)不對(duì)。先看一張速覽表約束類型作用關(guān)鍵字聲明位置非空約束字段值不允許為 NULLNOT NULL列級(jí)默認(rèn)值約束未顯式賦值時(shí)填充預(yù)置值DEFAULT列級(jí)唯一約束字段或字段組合的值不重復(fù)UNIQUE列級(jí)/表級(jí)主鍵約束行的唯一標(biāo)識(shí)隱含非空加唯一PRIMARY KEY列級(jí)/表級(jí)檢查約束字段值必須滿足給定表達(dá)式CHECK列級(jí)/表級(jí)外鍵約束保證子表與父表引用關(guān)系完整FOREIGN KEY表級(jí)NOT NULL、DEFAULT、UNIQUE 這三板斧管的是這個(gè)字段能不能為空、默認(rèn)變成什么、會(huì)不會(huì)重復(fù)。PRIMARY KEY 決定了一行數(shù)據(jù)在整個(gè)表里的身份。CHECK 管的是字段取值白名單或范圍。FOREIGN KEY 管的是表和表之間的引用關(guān)系。后面幾節(jié)我逐個(gè)拆解重點(diǎn)放在為什么和踩坑上。2. 最基礎(chǔ)的三道防線NOT NULL、DEFAULT 與 UNIQUE2.1 NOT NULL 和 DEFAULT 是黃金搭檔別拆開(kāi)用先看一個(gè)常見(jiàn)誤解字段加上 NOT NULL 就一定不會(huì)出現(xiàn)臟數(shù)據(jù)了只說(shuō)對(duì)了一半。如果一個(gè)字段聲明為 NOT NULL 但沒(méi)有 DEFAULT插入數(shù)據(jù)時(shí)不顯式給值在 MySQL 嚴(yán)格的 sql_mode 下會(huì)直接報(bào) 1364 錯(cuò)誤Field doesnt have a default value但在非嚴(yán)格模式下MySQL 會(huì)悄悄按照字段類型的隱式默認(rèn)值填充字符串填空串、數(shù)字填 0。很多老項(xiàng)目跑著跑著出現(xiàn)一堆 0 和空串原因就在這。所以 NOT NULL 幾乎總是要和 DEFAULT 一起設(shè)計(jì)。比如時(shí)間字段created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPcreated_at 靠 DEFAULT 在插入時(shí)自動(dòng)帶上當(dāng)前時(shí)間updated_at 靠 ON UPDATE 在行更新時(shí)自動(dòng)刷新。這套組合是建表的基本功也是我審查別人表結(jié)構(gòu)時(shí)第一個(gè)看的地方。這里有一個(gè)經(jīng)驗(yàn)要強(qiáng)調(diào)DEFAULT 的取值必須語(yǔ)義明確。業(yè)務(wù)上沒(méi)有填寫年齡應(yīng)該用 NULL 表示未知那就別寫成 DEFAULT 0如果業(yè)務(wù)要求必須有值再考慮 0 或某個(gè)哨兵值。很多系統(tǒng)后來(lái)查不出到底是真 0 還是沒(méi)填就是因?yàn)楫?dāng)年為了省事把 DEFAULT 寫成了 0。另外提醒一句DATETIME 類型從某個(gè)版本開(kāi)始才支持直接用 CURRENT_TIMESTAMP 做默認(rèn)值老項(xiàng)目里那種靠應(yīng)用層手動(dòng)拼時(shí)間的寫法在設(shè)計(jì)新表時(shí)完全可以退休了。2.2 UNIQUE 約束的 NULL 行為是個(gè)經(jīng)典陷阱UNIQUE 約束保證字段或字段組合的值不重復(fù)但它有一個(gè)經(jīng)常被忽略的特性MySQL 允許在 UNIQUE 列里插入多行 NULL。原因很簡(jiǎn)單在 MySQL 看來(lái) NULL 表示未知NULL 不等于 NULL所以每一行 NULL 都是新的。這個(gè)特性對(duì)業(yè)務(wù)影響很大。假設(shè) user 表的 email 字段加了 UNIQUE 約束注冊(cè)時(shí)用戶沒(méi)有填郵箱應(yīng)用層往庫(kù)里寫 NULL。第一個(gè)用戶能注冊(cè)第二個(gè)也能因?yàn)?NULL 不算重復(fù)。如果運(yùn)營(yíng)用 SELECT COUNT(DISTINCT email) 去判斷郵箱重復(fù)結(jié)果會(huì)和直覺(jué)完全不同。從 SQL Server 轉(zhuǎn)過(guò)來(lái)的同事最容易在這里踩坑——SQL Server 的唯一約束默認(rèn)只允許一個(gè) NULL。應(yīng)對(duì)辦法也簡(jiǎn)單如果業(yè)務(wù)上要求要么必填要么只有一個(gè) NULL就把可空字段的 NULL 在應(yīng)用層統(tǒng)一轉(zhuǎn)成空字符串處理如果一個(gè)都不能重復(fù)那這個(gè)字段就不該允許 NULL。2.3 UNIQUE 和普通索引的分工別搞混UNIQUE 約束在 MySQL 里落地時(shí)會(huì)自動(dòng)創(chuàng)建一個(gè)唯一索引既做約束又加速查詢。普通索引INDEX只加速查找不限制重復(fù)。很多剛?cè)腴T的同學(xué)會(huì)有疑問(wèn)那我在登錄賬號(hào)上建普通索引不也能加快查詢嗎能但這意味著數(shù)據(jù)庫(kù)默許了賬號(hào)重復(fù)等于把去重的責(zé)任全部推給應(yīng)用層。我的建議很直接凡是業(yè)務(wù)上不允許重復(fù)的字段——賬號(hào)、郵箱、手機(jī)號(hào)、訂單號(hào)——直接建 UNIQUE 約束只是需要加速查詢、允許重復(fù)的字段比如訂單表的用戶 ID、文章表的狀態(tài)建普通索引就夠了。判斷標(biāo)準(zhǔn)就一句話重復(fù)會(huì)不會(huì)造成業(yè)務(wù)事故。會(huì)就上 UNIQUE不會(huì)普通索引即可。3. 主鍵InnoDB 表的身份證到底怎么選3.1 自增主鍵為什么是默認(rèn)選擇主鍵約束合并了 NOT NULL 和 UNIQUE一行一個(gè)主鍵值不能為空也不能重復(fù)。在 InnoDB 里主鍵還有一個(gè)隱藏身份它是聚簇索引也就是說(shuō)表數(shù)據(jù)的物理存儲(chǔ)順序就是主鍵順序。這意味著主鍵生成方式直接影響寫入性能。自增主鍵是單調(diào)遞增的新行的主鍵值總是比已有的大寫入時(shí)追加在索引末尾頁(yè)分裂少、隨機(jī) IO 少。而如果把 UUID 字符串當(dāng)主鍵值完全隨機(jī)每次插入都可能落在索引中間的某個(gè)位置觸發(fā)頁(yè)分裂和碎片整理。同樣是十萬(wàn)行數(shù)據(jù)UUID 主鍵的表寫入耗時(shí)可能是自增主鍵的好幾倍索引體積也更大。我見(jiàn)過(guò)不少項(xiàng)目選擇 UUID 主鍵是為了防枚舉或分布式環(huán)境不依賴自增這個(gè)理由存在但和性能的取舍要講清楚。如果確實(shí)需要分布式唯一 ID優(yōu)先考慮帶時(shí)間序的生成算法類似雪花 ID、UUIDv7 這類既保持分布式的天然優(yōu)勢(shì)又把索引寫入的隨機(jī)性問(wèn)題壓到最低。3.2 業(yè)務(wù)主鍵和數(shù)據(jù)庫(kù)主鍵是兩回事很多表設(shè)計(jì)里會(huì)把訂單號(hào)直接設(shè)為 PRIMARY KEY我覺(jué)得這通常是設(shè)計(jì)錯(cuò)誤。訂單號(hào)是業(yè)務(wù)上暴露給外部的編號(hào)要面向用戶、要進(jìn)日志、要參與對(duì)外查詢它未來(lái)可能因?yàn)闃I(yè)務(wù)規(guī)則變化而需要調(diào)整格式或長(zhǎng)度。而數(shù)據(jù)庫(kù)主鍵只是行的內(nèi)部標(biāo)識(shí)最好是一個(gè)和業(yè)務(wù)完全無(wú)關(guān)、穩(wěn)定不變的數(shù)字。讓訂單號(hào)做 UNIQUE 約束來(lái)保證業(yè)務(wù)唯一性讓自增 id 做主鍵來(lái)管物理存儲(chǔ)各司其職將來(lái)改訂單號(hào)規(guī)則時(shí)你才會(huì)感謝當(dāng)初的設(shè)計(jì)。復(fù)合主鍵則要想清楚查詢模式再?zèng)Q定。比如選課表 PRIMARY KEY (class_id, student_no)如果業(yè)務(wù)主要按 student_no 反查學(xué)生選了哪些課這個(gè)復(fù)合主鍵幫不上忙還得額外建索引。復(fù)合主鍵遵循最左前綴原則最左邊的列一定要是高區(qū)分度的列否則索引效率很低。我見(jiàn)過(guò)把 status 放在復(fù)合主鍵第一列的查詢性能差到離譜后來(lái)還是拆了單列主鍵加普通索引。4. CHECK 與外鍵強(qiáng)約束的正確打開(kāi)方式4.1 CHECK 約束在 8.0.16 前后是兩個(gè)世界很多老資料會(huì)說(shuō) MySQL 不支持 CHECK 約束這個(gè)說(shuō)法已經(jīng)過(guò)時(shí)了。MySQL 8.0.16 開(kāi)始CHECK 約束被真正強(qiáng)制執(zhí)行在此之前MySQL 雖然在建表語(yǔ)法里接受 CHECK 子句但只是解析后直接忽略并不會(huì)攔截非法數(shù)據(jù)。所以如果你還在用 5.7 或更早的版本不要在表結(jié)構(gòu)上指望 CHECK老老實(shí)實(shí)靠應(yīng)用層校驗(yàn)。如果你已經(jīng)用 8.0 及以上CHECK 是控制字段取值白名單的好工具。舉兩個(gè)例子status VARCHAR(16) NOT NULL DEFAULT pending, CONSTRAINT chk_orders_status CHECK (status IN (pending, paid, refunded, closed)), CONSTRAINT chk_orders_amount CHECK (amount 0)加了這兩個(gè)約束之后任何一條把 status 寫成 PAID 或者把 amount 寫成負(fù)數(shù)的 INSERT 和 UPDATE都會(huì)被數(shù)據(jù)庫(kù)直接拒絕報(bào) 3819 錯(cuò)誤Check constraint violated。這對(duì)防止應(yīng)用層漏校驗(yàn)和運(yùn)營(yíng)手工改庫(kù)時(shí)手滑很有價(jià)值。一個(gè)細(xì)節(jié)CHECK 約束只攔截約束添加之后的新寫入和更新不會(huì)去回溯清理表里已經(jīng)存在的臟數(shù)據(jù)。換句話說(shuō)在 8.0 上給一張滿是臟數(shù)據(jù)的表加 CHECK加約束本身通常不會(huì)報(bào)錯(cuò)但后續(xù)對(duì)臟數(shù)據(jù)行的任何 UPDATE 都可能突然報(bào) 3819。上線前先把歷史數(shù)據(jù)洗干凈是動(dòng)手前的必修課。4.2 FOREIGN KEY 的級(jí)聯(lián)策略CASCADE、SET NULL、RESTRICT 怎么選外鍵約束只在 InnoDB 引擎下生效它保證子表引用父表的每一行都真實(shí)存在于父表。刪除父表行時(shí)外鍵的級(jí)聯(lián)策略決定了子表怎么反應(yīng)常見(jiàn)的有三種RESTRICT / NO ACTION默認(rèn)行為父表有子表引用時(shí)禁止刪除或更新直接報(bào) 1451 錯(cuò)誤CASCADE刪除或更新父表行時(shí)子表引用行跟著刪除或更新SET NULL父表行刪除時(shí)子表外鍵列被置為 NULL前提是該列允許為空。級(jí)聯(lián)策略沒(méi)有標(biāo)準(zhǔn)答案取決于業(yè)務(wù)語(yǔ)義。還是拿訂單舉例訂單是核心財(cái)務(wù)數(shù)據(jù)用戶不能在有訂單的情況下被刪除所以 user_id 外鍵應(yīng)該用 ON DELETE RESTRICT。而評(píng)論、站內(nèi)信這類附屬數(shù)據(jù)主內(nèi)容被刪了留著沒(méi)意義用 CASCADE 反而省事或者出于審計(jì)需求保留記錄那就把刪除改成邏輯刪除字段而不是物理刪行。SET NULL 要特別注意這個(gè)策略要求外鍵列本身允許 NULL。我在代碼評(píng)審里見(jiàn)過(guò)不少把外鍵列寫成 NOT NULL 卻配置 ON DELETE SET NULL 的表最后刪除父行時(shí)直接報(bào)錯(cuò)。設(shè)計(jì)階段就要想清楚這個(gè)關(guān)系是不是可斷開(kāi)的斷了之后子表記錄還有沒(méi)有存在意義。外鍵也不是免費(fèi)的。每次在子表寫入、更新或刪除InnoDB 都要去父表檢查引用是否存在會(huì)引入額外的鎖和 IO。高并發(fā)寫入的核心鏈路外鍵的檢查開(kāi)銷和鎖競(jìng)爭(zhēng)會(huì)被放大這也是很多團(tuán)隊(duì)在核心表上刻意不用外鍵的原因。4.3 分庫(kù)分表之后外鍵的限度要重新評(píng)估外鍵是數(shù)據(jù)庫(kù)層面的完整性機(jī)制前提是子表和父表在同一個(gè)數(shù)據(jù)庫(kù)實(shí)例里。一旦做了分庫(kù)分表訂單表在訂單庫(kù)、用戶表在用戶庫(kù)外鍵就徹底失效跨庫(kù)跨節(jié)點(diǎn)的引用完整性只能由應(yīng)用層通過(guò)事務(wù)、消息和補(bǔ)償機(jī)制來(lái)保證。所以外鍵用不用不是一個(gè)好不好的道德問(wèn)題而是部署架構(gòu)決定的工程問(wèn)題。單體應(yīng)用、數(shù)據(jù)量可控的中小系統(tǒng)外鍵是性價(jià)比極高的數(shù)據(jù)質(zhì)量保障分布式架構(gòu)、核心鏈路高并發(fā)外鍵反而可能成為性能和擴(kuò)展的瓶頸。我見(jiàn)過(guò)一些團(tuán)隊(duì)為了避免日后分庫(kù)分表從第一天起就在所有表上禁用外鍵這有點(diǎn)矯枉過(guò)正——等到真的需要分庫(kù)分表時(shí)再清除外鍵成本完全可控但在此之前外鍵替應(yīng)用層擋住了大量臟數(shù)據(jù)。5. 從零設(shè)計(jì)一張帶約束的訂單表完整實(shí)操5.1 把業(yè)務(wù)需求翻譯成約束清單設(shè)計(jì)規(guī)范的表結(jié)構(gòu)本質(zhì)上是一道翻譯題把業(yè)務(wù)規(guī)則翻譯成數(shù)據(jù)庫(kù)能執(zhí)行的約束。就以一個(gè)模擬訂單場(chǎng)景為例需求是這樣的每一筆訂單必須有唯一的業(yè)務(wù)訂單號(hào)訂單必須屬于某個(gè)真實(shí)存在的用戶訂單狀態(tài)只能是 pending、paid、refunded、closed 四種訂單金額不允許為負(fù)數(shù)有訂單的用戶不允許被直接刪除。翻譯成約束清單就是order_no 加 UNIQUE 約束user_id 加 NOT NULL 并建外鍵引用用戶表級(jí)聯(lián)策略選 RESTRICTstatus 加 CHECKamount 加 CHECK。這四條需求每一條都對(duì)應(yīng)一個(gè)明確的約束設(shè)計(jì)時(shí)對(duì)照檢查就不會(huì)出現(xiàn)字段裸奔的情況。5.2 完整建表 SQL 逐行解讀最終建表語(yǔ)句如下CREATE TABLE orders ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, order_no VARCHAR(32) NOT NULL, user_id BIGINT UNSIGNED NOT NULL, status VARCHAR(16) NOT NULL DEFAULT pending, amount DECIMAL(10, 2) NOT NULL DEFAULT 0.00, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_order_no (order_no), CONSTRAINT fk_orders_user FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE RESTRICT, CONSTRAINT chk_orders_status CHECK (status IN (pending, paid, refunded, closed)), CONSTRAINT chk_orders_amount CHECK (amount 0) ) ENGINE InnoDB DEFAULT CHARSET utf8mb4;逐行看id 是自增主鍵純粹的行標(biāo)識(shí)不參與任何業(yè)務(wù)邏輯order_no 是業(yè)務(wù)訂單號(hào)用 uk_order_no 這個(gè)唯一約束保證不重復(fù)user_id 上的外鍵 fk_orders_user 同時(shí)保證了用戶必須存在和有訂單的用戶刪不掉status 和 amount 兩個(gè) CHECK 約束把取值范圍釘死created_at 和 updated_at 交給數(shù)據(jù)庫(kù)自動(dòng)維護(hù)。外鍵這里有個(gè)細(xì)節(jié)值得留意InnoDB 要求外鍵的引用列子表和被引用列父表都存在合適的索引。子表 user_id 上如果事先沒(méi)有索引MySQL 會(huì)自動(dòng)給它補(bǔ)一個(gè)父表 users.id 因?yàn)橛兄麈I天然滿足條件。但如果你引用的是父表的非主鍵列一定要確認(rèn)那個(gè)列有索引否則建外鍵會(huì)直接報(bào) 1215 錯(cuò)誤。5.3 約束命名規(guī)范給自己留后路約束命名看起來(lái)是小事實(shí)際上非常影響后續(xù)維護(hù)。MySQL 里刪除外鍵約束、檢查約束都必須知道約束的名字如果建表時(shí)不顯式命名系統(tǒng)會(huì)自動(dòng)生成一堆類似 orders_ibfk_1 的名字?jǐn)?shù)量一多根本分不清誰(shuí)是誰(shuí)。我習(xí)慣的命名規(guī)則是主鍵就叫 PRIMARY唯一約束用 uk_ 前綴加字段名比如 uk_order_no外鍵用 fk_ 前綴加子表_父表比如 fk_orders_userCHECK 用 chk_ 前綴加表名和含義比如 chk_orders_status普通索引用 idx_ 前綴。這套規(guī)則簡(jiǎn)單、自解釋幾個(gè)月后回頭維護(hù)表結(jié)構(gòu)看名字就能知道每個(gè)約束在管什么。6. 上線之后想改約束ALTER TABLE 操作與報(bào)錯(cuò)排查6.1 增刪約束的標(biāo)準(zhǔn)語(yǔ)法表已經(jīng)上線了數(shù)據(jù)也跑了一兩個(gè)月這時(shí)候想補(bǔ)約束靠的就是 ALTER TABLE。語(yǔ)法其實(shí)不復(fù)雜-- 添加 CHECK ALTER TABLE orders ADD CONSTRAINT chk_orders_status CHECK (status IN (pending, paid, refunded, closed)); -- 刪除 CHECK ALTER TABLE orders DROP CHECK chk_orders_status; -- 添加唯一約束 ALTER TABLE employees ADD UNIQUE KEY uk_emp_email (email); -- 刪除唯一約束通過(guò) DROP INDEX 刪除因?yàn)?UNIQUE 約束底層就是唯一索引 ALTER TABLE employees DROP INDEX uk_emp_email; -- 添加外鍵 ALTER TABLE orders ADD CONSTRAINT fk_orders_user FOREIGN KEY (user_id) REFERENCES users (id); -- 刪除外鍵 ALTER TABLE orders DROP FOREIGN KEY fk_orders_user; -- 給字段加非空 ALTER TABLE orders MODIFY COLUMN user_id BIGINT UNSIGNED NOT NULL;初學(xué)者最容易搞混的是刪除語(yǔ)法刪除普通索引用 DROP INDEX刪除唯一約束也是 DROP INDEX刪除外鍵是 DROP FOREIGN KEY刪除 CHECK 是 DROP CHECK刪除主鍵是 DROP PRIMARY KEY。為什么唯一約束走 DROP INDEX因?yàn)?MySQL 里 UNIQUE 約束和唯一索引本質(zhì)上是同一個(gè)東西沒(méi)有單獨(dú)的 DROP UNIQUE 語(yǔ)法。6.2 加約束失敗的典型報(bào)錯(cuò)與其解法給線上表加約束最大概率遇到的坑是表里已經(jīng)有臟數(shù)據(jù)。約束是對(duì)未來(lái)的承諾但對(duì)過(guò)去的數(shù)據(jù)同樣要負(fù)責(zé)MySQL 發(fā)現(xiàn)存量數(shù)據(jù)違反約束時(shí)加約束操作會(huì)失敗。常見(jiàn)的報(bào)錯(cuò)和根因如下報(bào)錯(cuò)含義典型處理ERROR 1062 (23000): Duplicate entry已有重復(fù)值UNIQUE/主鍵加不上先查重復(fù)數(shù)據(jù)清洗后再加ERROR 1138 (22004): Invalid use of NULL value已有 NULLNOT NULL 加不上先 UPDATE 填充默認(rèn)值再 MODIFYERROR 1452 (23000): Cannot add or update a child row已有孤兒數(shù)據(jù)外鍵加不上先處理不存在的引用再建外鍵ERROR 3819: Check constraint violated已有值不滿足 CHECK 表達(dá)式先定位非法值并修正再加 CHECK以最常見(jiàn)的 1062 為例排查動(dòng)作其實(shí)三行 SQL 就夠SELECT order_no, COUNT(*) AS cnt FROM orders GROUP BY order_no HAVING cnt 1; -- 根據(jù)業(yè)務(wù)決定保留哪條多余的刪除或改號(hào) DELETE FROM orders WHERE id IN (...); ALTER TABLE orders ADD UNIQUE KEY uk_order_no (order_no);我的原則是任何約束操作之前先把對(duì)應(yīng)字段的 SELECT 查一遍。加非空之前查 NULL加唯一之前查重復(fù)加外鍵之前查孤兒加 CHECK 之前查范圍之外的值。這一步十分鐘的檢查能省下半夜處理報(bào)警的時(shí)間。6.3 外鍵報(bào)錯(cuò)的完整排查鏈路外鍵相關(guān)的報(bào)錯(cuò)是 ALTER 操作里最繞的我拆一個(gè)完整鏈路。假設(shè)線上執(zhí)行刪除用戶操作時(shí)報(bào)錯(cuò)ERROR 1451: Cannot delete or update a parent row: a foreign key constraint fails (shop.orders, CONSTRAINTfk_orders_userFOREIGN KEY (user_id) REFERENCESusers(id))第一步看報(bào)錯(cuò)里給出的約束名和表名能立刻定位是 orders 表的 fk_orders_user 約束擋住了刪除。第二步確認(rèn)級(jí)聯(lián)策略SHOW CREATE TABLE orders 查看外鍵定義發(fā)現(xiàn)是 ON DELETE RESTRICT說(shuō)明設(shè)計(jì)上就是不允許刪有訂單的用戶。第三步查詢引用數(shù)據(jù)量SELECT COUNT(*) FROM orders WHERE user_id 目標(biāo)ID。第四步?jīng)Q定方案要么給用戶做邏輯刪除而不是物理刪除要么先把訂單歸檔或遷移要么修改外鍵為 ON DELETE CASCADE——最后這個(gè)方案不推薦風(fēng)險(xiǎn)太大。再看加外鍵失敗的場(chǎng)景ALTER TABLE 報(bào) ERROR 1215: Cannot add foreign key constraint。這種情況的根因排查順序非常重要通常按下面三步走先對(duì)比數(shù)據(jù)類型和字符集子表 user_id 如果是 INT父表 id 是 BIGINT或兩邊字符集、排序規(guī)則不一致都會(huì)被拒絕再檢查父表被引用列是否有索引父表被引用列不是索引InnoDB 直接拒絕建外鍵最后檢查子表已有數(shù)據(jù)子表里有父表不存在的 user_id加外鍵會(huì)被 1452 拒絕。這套鏈路走一遍95% 的外鍵問(wèn)題都能在十分鐘內(nèi)定位完。剩下那 5%多半是字符集混用或者約束名沖突這類環(huán)境問(wèn)題用 SHOW CREATE TABLE 把兩個(gè)表結(jié)構(gòu)擺在一起對(duì)比很快也能看到端倪。最后補(bǔ)一句個(gè)人經(jīng)驗(yàn)。如果你接手了一張跑了兩三年的老表第一反應(yīng)千萬(wàn)別是把所有約束一次性都加上。先挑唯一性和非空這兩類約束直接決定業(yè)務(wù)數(shù)據(jù)能不能信跑穩(wěn)定了再加外鍵和 CHECK。每加一個(gè)約束之前先跑一條 SELECT 把違反規(guī)則的行撈出來(lái)和業(yè)務(wù)方確認(rèn)清洗方案再執(zhí)行 ALTER。數(shù)據(jù)庫(kù)約束這東西是在事情還沒(méi)發(fā)生時(shí)就建好的防御工事等數(shù)據(jù)爛了再補(bǔ)成本和勇氣都不是平常能想象的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
精品白丝一区| 无码一区二区三区四区五区六区七区八区九区十区视频 | 素人一区二区三区日韩| 欧美性性性| 大香网伊人久久综合网eew| 色色色综合网| 色爱综合网| 色操逼网| 日本人妻丰满熟妇久久久久久| 国产精品久久久久久久久久久久久久久久 | 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 加勒比av网| 人妻另类 专区 欧美 制服| 亚洲色图第四色| 自拍丝袜美腿人妻| 免费农村成人少妇人妻Aa一区二区视频| 女人高潮大叫一级毛片| 国产精品探花在线| 天天天天天天天天天天干美女| 国产偷拍网站| 中文字幕日韩专区精品系列| 天天看精品动漫视频一区| 超碰4A| 我中文字幕6区 | se吧提供国产乱老熟视频胖女人| 欧美Ⅴ性爱| 欧美成97爱| 高清孕妇孕交 交孕妇| 久久久专区| 欧美91在线+|+欧美| 欧美嗯啊……在线观看视频免费| 亚洲,欧美,春色,另类| 中文字幕 国产 精品| 手机在线播放国产福利| 国产精品蜜乳AV| 欧美黄色大片在线观看| 伊人精品久久网站| 精品亚洲国产成人av网站| 亚洲无码太久| 亚洲最大成人a毛毛片| A片大香蕉在线| 啊啊啊操死我| 884t在线| 欧美性爱网97| 亚洲污污网站| 久热伊人| 欧美综合国产精品久久丁香| 日韩无码精品综合久久| 日操粉逼逼| 国产精品三级视频网站| www.婷婷六月天| 99在线免费观看| 日韩精品一区二区三区四虎影视| 欧美最婬乱婬爆婬性视频 | 偷窥自拍亚洲天堂网爆| 殴美牲| 一牛影视久久久一区二区三区| 综合干干干av久久久综合网| 午夜精品久久久久久久99热影院| 午夜精品久久999热蜜桃介男人用| 欧美999999| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 磁力99AV| 91bbbbbb| 日本三级一区二区 在线| 激情抓乳插进去啪啪啪日韩| 狠狠激情综合狠狠操中文字幕| 欧亚免费视频| 97在线无精品| 亚洲欧洲激情卡通另类文学四射小说网站| 日韩国产欧美伦理在线| 蜜桃臀av在线观看| 夜夜春夜夜操| 搡老女人老妇女AAA一VU麻豆| 色区久久| 任我爽在线视频免费观看| 91国模| 亚洲国产ⅴ高清在线观看| 国产精品岛国片在线观看| 日本精品成人无码| 欧美日韩少妇色情| 熟妇人妻丰满久久久久久久无码| 日逼视频日本| 91网站18在线观看| 日本女人久久久| 在线综合 亚洲 欧美中文字幕| 手机在线观看不卡无码av| 国产999精品久久久久久| 青青操在线亚洲视频观看欧美在线| 中文久久96| 婷婷涩嫩草鲁丝久久午夜精品| AV一区观看| 九九亚洲| 四虎精品永久在线观看| 激情文学网伊人| 91男人综合| 精品国产三级av韩国在线| 色乱二区| 品亲网欧美品亲网| 被男人吃奶很爽的毛片| 国产夫妻一区二区| 热99re69精品8在线播放| AV和黑人在线播放| 亚洲色性情三级| 97天堂| 操操碰| 欧美精品不卡一二三四在线91| 国产一区二区免费福利片| 五月天丁香网| 97国产色综合| 国产免费一区| 立川理惠被中出无码| 久久精品店| 99re69| 欧美激情视频在线一区| 嗯啊不要在线| 久久香蕉国产线看观看亚洲女人 | 亚洲情色一区综合| 少妇熟女1区2区3区| 色色色热| 加勒比综合网| 免费的av网| 天天看天天日天天操| 亚州精人品大香蕉| 国产最火爆久久国产网站网站| 97在线免费看| 色就色综合| 久久国模av| 国产Aα| 91国产美女丝袜足交精品视频| 免费久久一级毛片大黄| 欧美在线视频播放| 日韩精品视频在线观看一卡二卡| 97se综合| 性爱动态120秒| 国产精品不卡高清在线观看| 亚洲欧美日韩电影网站一区| 国产精品免费视频不卡| 日韩无码极品| 一级黄碟在线观看| 在线观看色视频| 大香交| 亚洲天堂区| 欧美成人A√在线一区二区| 婷婷五月天无码| 凸凹视频在线观看| 97AV在线观看| 一二三四视频在线社区中文字幕| 新版天堂中文资源8在线| 久久日韩肥臀| 亚洲 欧美 小说| 18禁美女裸体无遮挡啪啪| 国产精品色约约| 婷婷五月天社区| av一区二区三区不卡| 欧美性生活内射| 人人考人人摸人人干| 欧美激情专区| 亚洲久久东京热一二三四五区视频| 91九色在线| 久久超碰国产一区二区三区| 国产精品久久久久久夜夜夜夜| 久热九九| 不卡av在线中文字幕| 91天美免费| 欧美97日韩| 在线看免费无码AV天堂的| 国产精品96久久久久久| 亚洲啪啪啪啪视香蕉| 久久99黄色卞西瓜| 国产原创剧情在线丝袜 | 亚洲影视综合网| 国产综合在线视频网站| 天天日天天干少妇日| 欧洲亚洲人人爽爽视频| 嫩草 人人网精品| 97香焦色区| 五月香婷婷| 亚洲导航深夜福利| 狠狠久久手机视频精品| 大香蕉懂9| 91久久堂| 精品96久久| 精品久久青青草| 精品国产片亚洲一区| 精品人体无圣光凹凸| 亚州性9| 成人开心网在线视频| 操B久久| 国产精品麻豆成人AV艾秋| 太久视频| 免费看国产曰批40分钟怎么下载| 成在线人在线观看视频| 国产 v乱码一区二| 国产热RE99久久6国产精品首| 乱伦一二三区| 亚洲国产婷婷在线播放| 国产精品99精品视频网站| 婷婷超| 亚洲男人天堂av| 伊人超碰97| 天天躁日日躁狠狠狠躁| 午夜在线播放| 好吊色青靑草| 亚洲视频中文一区| 伊人一区二区在线播放| 日韩激情毛片一级久久久| 亚洲国产成人7777| 日韩欧美成人综合在线| 黄色视频特级毛片| www狠狠| 色五月大香蕉| 蜜臀少妇一区二区| 校园春色综合色| 成年男人的天堂| 欧美性色综合网| 免费人人搞97| 久久天堂网| 爱丝福利| 国产成人亚洲精品无码最新在线| 国产美女自拍AV| 91碰超| 亚洲最大的综合性av| 国产精品探花在线| 五月丁香大香蕉| 青青草视频久久| 无码人妻丰满熟妇奶水区毛片| www.99热在线只有精品| 伊人久久亚洲色欲综合网站 | 中文字幕av亚洲在线| 天天干天天狼在线视频| 99在线精品观看99| 第二页中文字幕| 嗯,啊。舔我逼| 欧美黑人与女人91| 国产欧美精选激情视频| 操逼网站视频漫画国产| 手机av天堂久久久久| 亚州 综合 色图| 天天综合欧美黑人| 国产美女口爆吞精视频| 精品性爱一二三区| 操狠狠| 欧美少妇性乱| 97超碰欧美中文字幕| 午夜福利一区二区影院| 91久热这里只有精品| 国产精品suv一区| 狠狠入| 亚洲第一页第二页激情| 大香蕉丝袜一级片| 91成人社区| 久久99国产精品| 激情天天视频| 综合久久99| 夜夜国产一区| J?P?NESEHD熟女熟妇伦| 免费精品福利在线观看| 伊人四虎综合| 超碰在线人妻中文字幕| 久久五月视频| 男人天堂无码| 日韩综合无码色欲vv| 日韩精品一区的| 91色图片| 久久久96| 欧美性爱97超碰| 大香蕉92| 十八禁av无码免费网站APP| 这里只有精品久久| 极品色综合| 亚洲情色中文字幕一区| 少妇69中文| 日韩猛交| 色五月婷婷在线| 色香综合天天影视综合| 久久黄片国产一区二区| 91人妻丝袜无码| 欧美人妻制服| 亚洲丁香花色| 欧美精品系列| 中文字幕jul-617人妻熟女| 成人片视频| 国产无码三级视频在线观看| 天堂国产AV| 亚洲久久久久| 亚洲色天堂日韩中| 狠狠91| 色五月综合| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 国产 日韩 欧美一区| 久热婷婷| 女人综合网| 久都青青视频| 1000部熟女视频在线观看| 五月黑AⅤ| 欧美男人天堂| 九九夜精品九九在线| 日婷婷| 亚洲淫色网中文| 99老司机精品视频在线观看| 青青草啪啪网| 国产AV激情无码久久无码| 色婷婷久久综合超碰| 一区二区三区视频国产免费| 久久亚洲日韩国产欧| 国产成人bd在线观看| 91在线丝袜| 久久人人看| 国产99999| 亚洲色图 欧美热图 清纯唯美 另类自拍| 神马久久午夜| 亚洲视频一二区| 乱伦图一区| 午夜视频久久久| 久久人妻视频网| 天天综合网91| 欧美 亚洲 另类 综合| 久久美女国产| 欧美日韩大香蕉| 婷婷香网站| 动漫爆乳3D奶水一区在线观看| 婷婷人妻激情| 老熟女91av| 国产最新小视频在线播放下载| 亚洲熟女乱色一区二区三区久久久| 国产操逼逼网| 天堂男人网| 91激情网| 偷拍欧美激情| 色婷婷九月天天综合| 婷婷爽人人婷婷爽视频| 亚洲天堂人人妻| www…国产操逼| 大肥女高潮bbwbbwhd视频| 99蜜桃臀久久久欧美精品网站| 无码国产精品午夜不卡(| 亚洲加勒比久久日本道| 加勒比av官网在线| 亚洲精品一二三四区| 操逼国产免费| 亚洲中文字幕在现观看| 老鸭窝成人| 中文字幕乱码人妻一区二区三区,99精品| 狼狼色丁香久久婷婷综合五月| 粉嫩av一区二区三区天美传媒| 国产精品乱码久久久久久久久久久久| 理论久久婷婷网 8| 97国产高清视频在线观看| 91中出| 加勒比综合88| 9 1超碰九色| 欧美狠狠操| 91狠狠色丁香婷婷综合久久精品| 欧美日韩国产黄色片| av中亚| 亚洲双插| 天堂综合| 欧美91精彩| 97视频观看| 色综合久| 天天操天天插| 亚洲色诱惑| 久久九九视频九九视频| 国产操操日韩三级黄| 精品久久久av无码免费| 福利视频网站| 天天干电影| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 好爽视频在线观看视频| 亚洲久9| 在线二区不卡| 超碰97COm中文| 亚洲精品蜜桃久久久| 日韩无码AB| 啊啊啊97视频| 人妻 制服 日韩 中文 在线| 天天做天天爱天天爽AV| 330Dv国产女人终合视频极品人与兽| 夜色五月天| 五月丁香婷婷综合| 啊…啊…操我用力操我| 九色97| 国产乱码久久| 欧美男女午夜啪啪| 超碰激情808| 第二页中文字幕| 欧美色图片91| 欧美熟妇亚洲版| 一二三四视频在线社区中文字幕| 久日91在线| 91欧美性| 亚洲图片视频小说| 久久久久久九九九| 级做a爱无码性色永久免费| 尤物av网站免费在线播放| 国产农村妇女精品| 免费αV在线视频| 日本操逼视频不卡直接放| 日本一区视频在线观看| 性爱1区| 屌色在线97视频| 无码人妻一区二区一牛影视| av亚洲天堂资源网站| 麻豆成人av| 一本一道久久综合久久| 91 欧美| 丰满人妻一区二区三区四区| 国产1769在线| 超碰亚洲欧美日韩无| 99热在线不卡| 欧美日韩小说| 久久透逼视频| 久久 国产精品 一区| 很很干很很操| 男人精品天堂一区| 色臀AV| 成人小说视频在线精品欧美| 深田咏美亚洲精品福利社| 9/A片| 狠狠2050在线观看| 久久超碰com| 黄色av网站在线播放| 国产一级αv免费看片| 天天透伊人| 色五月AV在线| 三男一女不戴套的A片| 日本高清有码网址视频| 夜夜爽妓女| 色天天野狼综合社区| 国产老太乱伦一区| 国产精品自产拍在线观看社区| 久悠悠av| 91中出视频| 成人aⅴ一区二区三区| 人妻熟女一区在| 亚州色图片在线色| 色哟哟 日韩精品| 免费A V在线| 综合色拍| 国产狂喷潮在线精品| 五月婷婷丁香| 久久精品日韩专区免费观看| 国产成人超碰在线| 色97| 人妻精品一区二区在线| 神马久久啊啊| 亚洲国产精品成人综合| 国产av白丝| 日日骚一区二区三区| 韩国一级AAA| 国产a级精品| 色汉综合| 男人天堂2012| 99国产女人| 五月丁香六月婷| 超碰97在线中文| 免费看片黄| 少妇毛片久久| 日韩精品在线视频,日韩精品……| JULIA一区二区三区在线播放| 91爰爱欧美| 手机在线免费看的av| 亚洲另类久操网| 东京热毛片177b2viP| 九九AV| 欧美激情 一区| 中文字幕在线日亚洲9| 欧美激情黑人| 天天操天天舔| 丝袜综合网| 91精品91久久久中77777| 国产天天噜一噜久久久| 3p国产色噜噜一区| 久草免费在线视频| 蜜桃视频精品一区二区| 丰满人妻一区二区三区免费| 人夜夜精品网站香蕉嫩草| 久久高潮妇女视频| 久久久久久久 九九九九九九九| 天久久久噜噜噜久久国产精品爽爽 | 懂色AV蜜臀无码精品APP | 综合久久少妇中文字幕| 人妻色偷色噜| 亚洲精品天天影视综合网 | 激情抓乳插进去啪啪啪日韩| 老司机午夜精品福利视频一区二区| 欧美日韩国产三级黄色| 欧美性少妇| 四虎AV在线观看| 亚洲成a人v欧美综合天堂下载| 熟女丰满人妻一区| www.亚洲黄色| 91日日夜夜| 五月天成人综合| 福利视频合集| 人妻内射一区二区在线视频| 91干熟女| 2021国产成人精品久久| 欧美在线 亚洲| 99精彩视频| 先锋影音av先锋一区| 日日嗨AV一区二区夜夜| 婷婷五月天基地| 在线观看不卡一区二区三区| 无码九九| 日韩 人妻 精品| 韩日欧亚a级| 五月天AV资源| 美女视频尤物网在线看| 亚洲在线观看| 亚洲 中文 女同| 黄色AAAAA欧美| 青青草大香蕉视频| 美腿丝袜偷拍亚洲欧美| 99九九精品| 久久久久九九九九| 99re在线视频国产| 精品一区96| 国产女性无套 免费观看| 精品人妻一区二区免费蜜桃视频| 91美女在线视频| 五月丁香啪啪| 一区二区三区探花在线观看| 欧亚日韩中文在线| 亚州精品人妻一二三区| 中文字幕乱碼在线| 伊人久久青青草| 色欲日韩欧美在线一区| 大香蕉视频一二三区| 日韩欧视频| 操淫穴亚洲五月丁香| 人妻天天爽夜夜爽爽| 亚洲四虎熟女精品| 中文字幕精品一区二区精| 色姑娘综合网| JuliaAnn丝袜熟女系列| 懂色av中文字幕| 天天看片麻豆| 九九九久久久久| 色穴精品| 激情四射婷婷四五月天| 色综合色综合网| 欧美专区日本专区| 欧美性爱1080p| 樱花蜜乳av| 韩国免费播放一级毛片| 无码78| 视频在线观看青青99国产| 日日噜噜夜夜久久亚洲一区二区| 久久精品72| 欧亚第一综合网| 久久视网78| 欧美 传媒 麻豆 日韩 偷拍| 久久超碰亚洲人| 日韩精品三区四区| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 99精品国产户外露出| 久久精品28| 久久精品超碰| 欧美日韩资源| 婷婷操视频| 亚洲巨爆乳一区二区三区四季网| 国产自制av蜜乳| 色图综合网| 1769一区| 在线播放一级无码视频| 中国东北熟女老太婆内谢| 嫩草影院在线观看精品| 亚洲欧美激情在线视频| 日本一级一级一级一级| 97精品国产97久久久久久户外免费| 日韩人体偷拍| 久久精品老司| 丝袜色综合| 96国产精品| 91亚洲欧洲| 一级婬片120分钟试看| 欧美亚洲一级在线观看| 全球成人中文在线| 精品少妇一区二区三区免费观看| 中文字幕av久久爽Av| 自拍欧美| 午夜美女诱惑电源网| 熟妇女伦乱视频| 秋霞网无码| 日韩操逼HD| 亚洲精品无码少妇久久| 天天看少妇| 嗯嗯啊啊好大好爽| 97鸡把在线视频| AV乱伦国产| 大香网站| 日本天天人人狠狠在线日美女| 久久超碰免费的| 一区二区不卡免费| 国产精品美女视频诱惑| 懂色天天爱天天日天天射天天澡| 激情五月天网站| 国产成人主播| 国产精品久久泡妞网站| 色天使亚洲综合在线观看| 免费AV播放| 欧美中文狠| 日本不卡在线二区三区| 岛国视频一二三区| 欧美亚洲高清晰| 91在线免费精品视频| 欧美日本国产日韩激情视频| 2001天天操| 亚洲男人天堂2| 色波多| www.99热| 日韩人人精品| www.伪伪| 亚洲AO在线| 国产精选视频| 岛国艾薇凹凸视频天堂| 1二区9| 亚洲在线| 久久久人妻| 欧美在线第五页| 欧美精品一区二区少妇免费A片| 七久久久| 熟女91网站| 国产 日韩 另类 视频一区爱| 大香蕉在线免| 人人操 欧美| 极品色社| 久久精品店| 69精品人人人人| 久久精品人妻一区二区三区| 欧美亚洲尤物久久| 国产精品熟女九九九| 在线日韩日本亚洲国产| 精品无码久久久| 熟女人妻精品一区二区视频| 另类视频在线| 欧美综合天堂| 久青草影院| 人人妻人人爽人人精品| 亚洲超碰在线| 久久伊人影院| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴| 中文字幕av片| 日本 欧美 国产一区| nuu12国产麻豆精品| 多乙久久久久久| 欧美色爱综合| 亚洲第一综合| 欧美亚洲小说| 日本天堂网| 国内精品嫩模A∨私拍小视频| 偷拍欧美激情| 1级黄色夫妻对换性交免费看| 一区中文字幕二区日韩| 无码直播久久久| 热久日综合| 99精品久久久久久久婷婷| 欧美色图97| 超碰99在线观看| 国产路线专区| 超碰激情808| 色y情视频免费看| 亚洲鸥美色图| 超碰国产在线| 国产二区三区免费视频| 精品一区二区三区四区外站| 唐山老熟妇露脸啪啪叫| 亚洲综合在线91| 天天摸天天插天天日| 妇女性内射冈站HDWWWCOM| 中文字幕AV片| 日韩无码成人电影| 大香蕉伊人网| 龙兴卡官方查询| 久久久激情| 青娱乐福利99| 欧美在线干| 电影69乱码96| www.91理论| 天天肏天天干| 人妻黑丝袜电影| 国产精品色色| 亚洲国产精品9999在线观看| 亚洲AV永久无码精品成人调教| 夜夜操2028| 黑人狂躁日本妞一区二区三区| 国产女主播视频在线观看| 伊人天堂在线| 少妇高潮对白在线观看| 97天天综合| 欧美日韩美女精品久草一区二区三区 | 欧美aaaaaaa| 久久啊啊| 午夜无码熟妇丰满人妻| 激情自拍 校园春色| av天堂天堂av日韩| 野狼福利社区| 欧美淫乱视频| 大香蕉一人在线| 色婷婷激情| 97欧美性爱| a片久久久久久久久久久久| 欧美性少妇| 久久爱超碰网| 神马视频久久久久久| 在线观看精品国产免费| 国产一区二区三区免费视频在性观看 | 中字幕人妻一区二区三区| 午夜传煤十二区精品| 色色综合97| 久久久久久久久久久久久9999| 中文字幕狠狠玩| 久久伊人亚洲AV无码网站| 男人的天堂一区| 97在线观看视频| 中文字幕人乱码中文字的预防方法 | 国产欧美伊人| 九九热精品| 欧亚在线视频| 久久国内| 中日韩熟女| A 在线网址| 亚洲欧美一区二区网址| 天天综合-91入口| 青青草这里只有精品| 成人精品水蜜桃久久久久久久| 你草精品在线视频| 天天综合网久久ww| 嫩草 人人网精品| 欧美嗯啊……在线观看视频免费| 91啪啪| 色色五月婷婷| 95人妻爽爽人人做人人澡| 日韩女模中文造逼| 3p国产欧美99热| 亚洲日韩国产欧美综合v| 最新三级网址| 韩国成人精品久久久免费看| 香蕉久久AⅤ...| 中国大陆国产高清AⅤ毛片| 精品久久无码午夜福利| 精品美女久久久久| 强奸乱伦AV网址| 国产精品一区二区校花| 精品午夜福利国产一区二区在线观看 | 五月丁香激情综合网| 五月丁香影视| 丰满欧美少妇| 成人网欧美风情| 欲香欲色天天天综合和网| 亚洲色悠悠久久88| 亚洲日本大香蕉1| 国产91 丝袜在线播放| 日韩有码专区| 中文字幕第9页萱萱影音先锋| 国产黄色剧情影片麻豆免费播放| 亚洲国产成人7777| 中文字幕亚洲热播人妻| 亚洲精品日韩国产欧美| 99热这里只有精品8| 国语人妻精彩刺激| 69视频福利导航| x97av| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 色色婷| 国产久久久9999| 日本男人插女人的逼黄色| 伊人久大| 日韩免费a级毛片无码a∨| 国产一区自拍欧美日韩| 殴美大黄片| 色97| 国产精品久久久久999| 日韩啪啪视频| 日韩精品在线观看观看| 色色色欧美| 日本精品国产视频| 天天综合~91| 立川理惠被中出无码| 国产高清在线观看欧美| 美女刺激久久国产欧美| 欧亚日韩三区| 熟妇熟女一区二区三区| 二男一女成人A片| 日韩高潮一区| 91色堂| 欧美性xxxxx狂欢| 亚洲一卡2卡3卡4卡乱码网站| 亚洲情色91| 天天躁夜夜躁狠狠躁AV| 久操电影| 婷婷综合网| 午夜毛片高清免费不卡| 九九九九九九视频免费| 91精品啪在线观看国产城中村| 天天综合亚在线| 日日玩天天干| 变态乱伦伪娘灌肠一区二区| 日韩国语字幕| 香蕉国产97| 影视综合无码少妇| 欧美性爱97超碰| 青草精品视频一日本久久久久网站| 国产精品一区二区亚洲人成毛片| 美女黄色一级A视频| 熟女露脸激情自拍视频| 黄色电影在线播放综合网站| 在现视频女上位好爽| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 日本熟妇色熟妇在线视频播放| 亚洲欧美999| 99久热| 91色射| 人人干人人搞人人摸| 色九九九综合| 久久久久久亚洲Av无码| 殴美日韩m| 日韩性爱一级片| 国产最新AV| 国产熟妇 码视频户外直播| 色情综合网| 日曰骚久久精品| 欧美做爰无码A片视频| 伊人久久亚洲色欲综合网站 | 亚洲深夜福利| 久久久久9| 日韩欧美中文字亚洲慕| 欧美强奸乱能| 97av,com| 成人性爱高清视频免费看| 欧美亚洲宗合色性图| 小日子操bb在线看| 91国产美女丝袜足交精品视频| 日韩在线欧美精品一区二区| 九九十八精品| 无码人妻一区二区三区色欲aⅴ| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 天天色踪合| 亚洲图片欧洲图片aⅴ| 亚州欧美综合| 在线观看日韩av不卡| 超碰色大香蕉| 婷婷五月花| 热热色中文无码| 99热这里只有精| 草草草视频在线免费看| 欧美一区二区传媒| 天天艹天天日| 国产三级中文字幕粉嫩| 99啪啪| 婷婷涩嫩草鲁丝久久午夜精品| 欧美精品另类人妖xxxx| 日韩无码视频黄色| 免费亚洲国产精品久久一区| 91精品国产高清久久久久久,亚洲成人 | 国产精品不卡av免费在线观看| 中文字幕片| 五月天丁香婷婷综合网站| 正宗无毛一线天嫩逼| 亚洲有码 视频一区| 老子午夜伦不卡影院| 9999久久久久| 国内91熟女人妻丝袜天天精品视频在线| 日本不卡一区二区| 欧美78| 日本欧美国内在线| 最新日本中文字幕| 天欧美在线| 男人的天堂2019AV| 中文字幕日韩电影人妻| 激情内射| 涩爱AV在线| 亚洲古典另类欧美在线| 亚洲色阁| 亚洲日韩少妇一道本视频| 激情AV| 日韩欧美成人综合在线| 日本亚洲嫩草影院啪啪| 操人妻逼91| 成人短视频在线观看| 五月丁香黄色网| 国产精品一区二区麻豆| 不卡九肏| 免费黄色片子| 日韩精品碰碰| 综合网91| 超碰97人人乐| 天美传媒在线一区| 亚洲91少妇| 爆操无码| 久久久久久亚洲Av无码| 欧美日韩亚洲天堂| 亚洲男人综合网| 91逼逼女人91| 五月婷婷性爱| 亚洲成人一区二区精品| 欧美一级在线观看成人 | 婷婷精品视频| 色色福利| 久久精品国产亚洲妲己影视| 97美日韩视频| 91欧美巨乳| 日本一天色道久久久精品视频| 五月婷婷六月天| 久久精视频美日韩在线视频| 狠狠色伊人亚洲综合网站色| 综合亚洲欧美| 亚洲欧美内射| 成人久久久精品| 美女毛片999| 国产白领连续中出在线观看| 99这里只有精品| 国内精品伊人久久久久影院会| 国产成人自拍视频视频| 2024黄色视频| 女人久久久| 欧美人妻制服| 97国产|免费| 亚洲中字慕不卡| 久久精品中文字幕女同| 中文字幕精品乱码| 久久鲁夜| 白丝少妇一区二区| 亚洲视频,小说| 国产精品 午夜福利| 熟女在线视频| 久久9亚洲| 国产超碰国产97| 性色一线| 亚洲91av| 亚洲人在线成线成人| 超碰久久性爱| 富二代亚洲精品99| 丝袜狠狠草尤物人妻av91| 天天影视综合网欧美精品| 人人色97| 九九九九九九亚洲| 丝袜性亚洲| 国产精品视频播放| 很很很很操| 啊啊啊啊啊啊啊在线| 色偷偷超碰亚洲| 国产精品大屁股999| 热热色国产一二区AV| 国产福利小视频高清在线观看| 香蕉久久AⅤ...| 久久久久久国产精品免费网站| 国产成人手机视频激情| 免费av大片| 丁香五月婷婷色| 亚洲影视综合网| 91 国产丝袜在线放观看| 99国产精品免费| 色天堂在线观看| 久久婷婷苹果| 九九九九精品九九九九| 97无码视频在线播放| 天天做日日做| 五月天激情四射| 日韩精品.久久精品.AV女优.天美传媒| 九九九九九九九九九九九免费国产| 成人色女网| 美女丝袜激情小说| 狠狠爱夜夜| 自拍偷拍草一草| 96久久精品一二三区色欲| 久热久| 亚洲图片欧美制度| 欧美激情一| 少妇久久久久久久| 操逼www.| 欧美后进式| 老鸭窝黄色视频网站| 日本高清视频在线观看黄已三辽| 天天综合网~91| 国产日韩欧美操逼视频| 国产成人无码网站在线视频| 日本91白丝| 老熟妇一区二区三区啪啪| 中国91AV| 国产精品爽爽v| 色婷婷六月| 国产成人天堂| 熟女人妻一区二区三区| av网页一区二区三区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 日本精品国产视频| 亚洲国产97在线精品一区| 亚洲欧美国产中文视频| 国产女人成人精品视频| 大香蕉国产中文自拍| 亚欧洲日韩国产精品| 日本免费中文字幕在线| 神马精品视频| 日韩射图| 亚洲国产欧美另类自拍| 蜜桃成人1区2区3区| 男人的天堂三级| 国产成人精品必看| 91爽啪| 亚洲天堂电影网99999| 亚洲欧洲综合av在线| 亚洲 欧美 中文 日韩超碰| 在线色资源| 操逼天美3区| 久久久9视频| 日韩精品午夜操呦呦不卡影院| 乱伦1色页| 黑人天8A∨高清网站| 97爱综合| 丁香五月综合| 精品少妇高潮久久| 精品性爱一二三区| 天天色怡春院| 性爱视频免费网址| 国产超碰国产97| 青青久久艹| 久久久婷| 亚春色色| 你懂得91| 96国产精品| 丰满的三级少妇欧美久久久| 亚洲日韩XXX| 免费的很黄很污的全部视频| 欧美老妇综合网| 国产极品粉嫩馒头一线天av| 96AV精品| 深夜福利黄片| 日韩美女久久一区二区三区| 久操免费在线| 蜜臀av在线播放一区二区三区| 欧美黑人与女人91| 翔田千里av一区二区三区| 欧美人妻一区二区| 精品少妇一区二区三区在线视频| 欧美色图小说综合| 曰韩成人免费视频| 丝袜视频网国产90| 久久综合激情| 亚洲男人在线观看天堂| 日本三级中国三级99人妇网站| 亚洲同性aV综合| 亚洲综合五月天婷婷丁香| 97精品在线视频| 天天干天天日天天射黄色| 在线免费观看高清无码视频| 欧美三级免费伊人| 99久久久无码精品国产人| 天天操人人操骚逼网站| 國產尤物AV尤物在線觀看| 久久精品六区| 920日本午夜免费| 欧美日韩在线视频网站| 欧美A√综合网| 日本熟妇人妻中出视频| 欧美图片校园春色| 日韩另类色图| 欧美十八禁视频| 久久久久无码一妻区| 97国产成人精品免费视频| 九九九国产| 宅男午夜在线视频| 99精品视频在线观看免费| 一本色道久久综合狠狠操| 嗯嗯啊中文字幕| 免费av高清无码| 国内一区二区三区| 人妻天天夜夜爽一区二区| 操B视频日韩无码| 福利五区| 九九久久久九九| 欧美日韩 强奸乱伦| 天天操妹子| 麻豆AV短剧| 秋霞视频一区二区| 精品人妻一二三| 久热99999| 岛国小电影| 国产成人bd在线观看| 91bbb| 天天天操天天天爱| 操九九九九九九| 欧美强奸乱| av三级电影在线播放| 久久原创中文| 国产视频一区二区在线| 手机在线人成免费视频| 久久久久久九九九| 偷拍综合亚洲| 日本熟妇熟色97一本在线观看| 蜜桃视频成a人v在线| 97干97色| 亚洲91射| 男人网站婷婷| 国产丝袜美女诱惑| 亚洲福利中文字幕在线| 韩国黄片aaaa| 丁香五月婷婷基地| ji熟女.com| 精品九九九九九| 97天天插| 午夜啊啊啊| 欧美一区91大爱| 精品久久人妻成人网| 国产久久成人| 天天激清| 欧美熟妇色| 99久久9| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 夜夜狠狠躁日日躁色视频| 六月婷婷综合| 九九综合久久| 日韩精品中文字幕一| 日韩强奸av| 在线亚洲欧美| 91n欧美| 黑人在线91| 国产suv精品一区| 黄久在线| 九九九九九九九九九五码| 一牛影视久久久一区二区三区| 色婷婷丁香五月| 91操人视频| 一区二区娱乐网站| 少妇干B| 久久性爱网站| 八人操人人摸人人看| 一起草欧美| 大香蕉www.超碰| 五月天久久综合网| 国产狂喷潮在线精品| 久久伊人最新网址视频| 97视频在线播放| 亚洲欧美不卡线| 嗯嗯啊好爽| 亚洲精品九九九| 九九碰九九爱97超| 97精品网| 日本乱人伦片中文三区| 最新日本中文字幕| 日韩三级在线观看网站| 香港澳门日本三级网站| 中文字幕第9页萱萱影音先锋| 一起草三级AV电影在线观看 | 啊啊啊啊视频免费| 欧美亚洲性爱一区二区| 国产精品熟女AV中文字幕在线播放| 中文字幕国产精品1区| 毛片视频白嫩| 久久天天躁日日躁狠狠躁| 久久一区,青青青青草视频在线播放| 超碰在线974| 91五月天| 2020中文字幕在线| 夜夜夜爽www精品视频| 人妻丝袜一区二区三区在线| 97精品免费视频网站|