整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          mysql 臨時(shí)關(guān)閉約束_關(guān)于sql:如何暫時(shí)禁用MySQL中的外鍵約束?

          是否有可能暫時(shí)禁用MySQL中的約束?

          我有兩個(gè)Django模型,每個(gè)模型都有一個(gè)到另一個(gè)。 由于約束,刪除模型的實(shí)例會返回錯(cuò)誤:

          cursor.execute("DELETE FROM WHERE n = %s", n)

          () #a foreign key fails here

          cursor.execute("DELETE FROM WHERE n = %s", n)

          ()

          是否可以暫時(shí)禁用約束并刪除?

          要么我沒有得到你想做的,要么你想要做的是非常,非常,非常丑陋。即使你能做到,你也許不應(yīng)該這樣做。

          刪除并重新應(yīng)用FK正在改變您的數(shù)據(jù)庫。你試圖挑戰(zhàn)允許系統(tǒng)看到某種意義的限制因素,它并不認(rèn)為FK可能是一個(gè)暫時(shí)的東西,如果它確實(shí)知道,那就會引起恐慌。

          你想做什么很奇怪。但是你使用的是哪個(gè)數(shù)據(jù)庫?

          @:我正在使用MySQL。我將編輯我的問題以添加它。

          如果您將其永久修改為ON DELETE SET NULL而不是禁用約束,該怎么辦?這將完成類似的事情,你不必打開和關(guān)閉鍵檢查。

          @dnagirl:確實(shí)會更好。我怎樣才能做到這一點(diǎn)?

          你應(yīng)該按照@dnagirl的要求去做。它的方式更合理,并且確保您不會以非常討厭的方式處理數(shù)據(jù)。像你想做的那樣玩它可能會導(dǎo)致嚴(yán)重的完整性和一致性問題。

          試試DISABLE KEYS或

          SET =0;

          確保

          SET =1;

          后。

          這是為mysql整體設(shè)置還是僅為該會話設(shè)置的東西?

          我相信這是每次會議。

          //8538636/…

          //291100/… ,另請注意,Innodb不能disable keys

          我可以為單個(gè)表禁用嗎?

          @從閱讀中看,它似乎可以,但僅適用于單個(gè)會話。

          要全局關(guān)閉外鍵約束,請執(zhí)行以下操作:

          SET GLOBAL =0;

          并記得在完成后將其設(shè)置回來

          SET GLOBAL =1;

          警告:只有在進(jìn)行單用戶模式維護(hù)時(shí)才應(yīng)執(zhí)行此操作。因?yàn)樗赡軐?dǎo)致數(shù)據(jù)不一致。例如,當(dāng)您使用輸出上載大量數(shù)據(jù)時(shí),它將非常有用。

          網(wǎng)站關(guān)閉是否能進(jìn)入_臨時(shí)關(guān)閉網(wǎng)站要怎么做_如何臨時(shí)關(guān)閉網(wǎng)站

          這是我需要知道的,所以這不是很好的練習(xí),但這個(gè)家伙的回答應(yīng)該是得分更高......

          在嘗試"最佳答案"后,這對我有用。也許可以添加對差異的解釋。

          @hexnet區(qū)別在于只有SET 才會更改當(dāng)前連接的值,而SET GLOBAL ..會更改所有連接的值,包括將來的連接。如果你只是在一個(gè)窗口中執(zhí)行SET FOREIGN..,那么嘗試在不同的窗口(通過不同的連接)中應(yīng)用該語句,那里的值沒有改變。對于GLOBAL,兩個(gè)連接的相同變量具有相同的值。

          回放更大的轉(zhuǎn)儲(6+ GB)

          這對我不起作用。當(dāng)我嘗試時(shí),我看到:ERROR 1228 (HY000): '' is a SESSION and can't be used with SET GLOBAL

          嘗試 @MikeB

          @berniey沒有運(yùn)氣。不過沒關(guān)系。我使用alter語句暫時(shí)禁用外鍵約束。

          @MikeB,我認(rèn)為它與您用來發(fā)出命令的工具有關(guān)(它與myqsl命令行工具一起使用)。我一直在v5.5和5.6上使用該命令,它工作正常。文檔建議甚至適用于v5.7。 /doc/refman/5.7/en/server-system-.html。此外,案件無關(guān)緊要(請?jiān)徫抑暗慕ㄗh)

          請注意,如果連接到在發(fā)出全局查詢之前啟用了外鍵檢查的MySQL,則會保留外鍵檢查的當(dāng)前會話狀態(tài)。即SET GLOBAL =0; SELECT @@;將返回1,直到您重新連接以開始新會話

          我通常只在我要截?cái)啾頃r(shí)才禁用外鍵約束,因?yàn)槲也粩嗷氐竭@個(gè)答案,這是為了將來我:

          SET =0;

          TABLE table;

          SET =1;

          不是禁用約束,而是永久地將其修改為ON DELETE SET NULL。這將完成類似的事情,你不必打開和關(guān)閉鍵檢查。像這樣:

          請閱讀此內(nèi)容()和此內(nèi)容( /create-table-foreign-keys.html)。

          注意更改表可能需要很長時(shí)間,最好將服務(wù)器全局設(shè)置為為0,并在臟工作完成后將其重新放回。除此之外它可能會鎖定寫表。

          改變遠(yuǎn)程列類型時(shí)不會破壞引用嗎? (似乎我的客戶端將修改后的臨時(shí)表重命名為原始表名。)

          要全局關(guān)閉外鍵約束:

          SET GLOBAL = 0;

          并用于活動外鍵約束

          SET GLOBAL = 1;

          的一個(gè)非常簡單的解決方案:

          在表格中,轉(zhuǎn)到SQL選項(xiàng)卡

          編輯要運(yùn)行的SQL命令后,GO旁邊會出現(xiàn)一個(gè)復(fù)選框,名為"啟用外鍵檢查"。

          取消選中此復(fù)選框并運(yùn)行SQL。它將在執(zhí)行后自動重新檢查。

          謝謝!確實(shí),解決方案SET =0; ..... SET =1;在中對我不起作用,因?yàn)槲彝巳∠x中"啟用外鍵檢查"復(fù)選框。在中,您可以跳過這些SET命令,只需取消選中該復(fù)選框即可。

          如果鍵字段可以為空,那么您也可以在嘗試刪除它之前將該值設(shè)置為null:

          cursor.execute("UPDATE SET = NULL WHERE n = %s", n)

          ()

          如何臨時(shí)關(guān)閉網(wǎng)站_臨時(shí)關(guān)閉網(wǎng)站要怎么做_網(wǎng)站關(guān)閉是否能進(jìn)入

          cursor.execute("UPDATE SET = NULL WHERE n = %s", n)

          ()

          cursor.execute("DELETE FROM WHERE n = %s", n)

          ()

          cursor.execute("DELETE FROM WHERE n = %s", n)

          ()

          對我來說,SET =0;還不夠。

          我還有一個(gè)com.mysql.jdbc..jdbc4.on。

          我不得不添加ALTER TABLE myTable DISABLE KEYS;。

          所以:

          SET =0;

          ALTER TABLE myTable DISABLE KEYS;

          DELETE FROM myTable;

          ALTER TABLE myTable ENABLE KEYS;

          SET =1;

          僅供參考,mySQL 5.7拋出警告,運(yùn)行DISABLE KEYS命令時(shí)InnoDB引擎沒有此選項(xiàng)。

          這確實(shí)有效,沒有改變表它也不適合我

          在中,您可以選擇多行,然后單擊刪除操作。您將進(jìn)入一個(gè)列出刪除查詢的屏幕,您可以取消選中外鍵檢查,然后單擊是以執(zhí)行它們。

          即使存在ON DELETE限制約束,這也可以刪除行。

          將外鍵約束設(shè)置為0并不是一個(gè)好主意,因?yàn)槿绻@樣做,您的數(shù)據(jù)庫將無法確保它不會違反參照完整性。這可能會導(dǎo)致數(shù)據(jù)不準(zhǔn)確,誤導(dǎo)或不完整。

          您出于某種原因創(chuàng)建外鍵:因?yàn)樽恿兄械乃兄刀紤?yīng)與父列中的值相同。如果沒有外鍵約束,子行可以具有不在父行中的值,這將導(dǎo)致不準(zhǔn)確的數(shù)據(jù)。

          例如,假設(shè)您有一個(gè)供學(xué)生登錄的網(wǎng)站,每個(gè)學(xué)生都必須以用戶身份注冊帳戶。您有一個(gè)用戶ID表,用戶ID作為主鍵;和另一個(gè)學(xué)生帳戶表,學(xué)生ID為專欄。由于每個(gè)學(xué)生都必須擁有用戶ID,因此從學(xué)生帳戶表中將學(xué)生ID作為引用用戶ID表中的主鍵用戶ID的外鍵是有意義的。如果沒有外鍵檢查,學(xué)生可能最終擁有學(xué)生ID而沒有用戶ID,這意味著學(xué)生可以在不是用戶的情況下獲得帳戶,這是錯(cuò)誤的。

          想象一下,如果它發(fā)生在大量數(shù)據(jù)上。這就是你需要外鍵檢查的原因。

          最好找出導(dǎo)致錯(cuò)誤的原因。您很可能嘗試從父行刪除而不從子行中刪除。在從父行刪除之前嘗試從子行中刪除。

          沒錯(cuò),總會有一個(gè)權(quán)衡。

          沒人說要永遠(yuǎn)這樣運(yùn)行它。您關(guān)閉約束,批量加載某些數(shù)據(jù),然后重新打開它。沒什么大不了的,人們總是這樣做。

          對于批量進(jìn)口是必要的,至少對于性能來說,它是非常普遍的。有時(shí)您只需要恢復(fù)數(shù)據(jù),然后您可以進(jìn)行檢查。

          這不是問題的答案。

          請注意,他的問題是暫時(shí)如何做到這一點(diǎn)。執(zhí)行某些維護(hù)和數(shù)據(jù)導(dǎo)入時(shí)需要這樣做。需要注意的是,導(dǎo)入腳本會對數(shù)據(jù)完整性負(fù)責(zé)。然后,稍后當(dāng)重新打開索引和約束時(shí),db將告訴您某些內(nèi)容是否已損壞。

          你有沒有用過?

          在access中如何創(chuàng)建復(fù)雜報(bào)表

          access中的報(bào)表是一個(gè)按指定格式顯示打印輸出數(shù)據(jù)的數(shù)據(jù)庫對象,報(bào)表可以對數(shù) 據(jù)進(jìn)行分組計(jì)算匯總和打印輸出等操作。報(bào)表有四種視圖:

          1:報(bào)表視圖:顯示報(bào)表的實(shí)際效果。

          2:打印報(bào)表視圖:顯示報(bào)表的分頁打印效果,可以放大或縮小

          3:布局視圖:顯示報(bào)表的實(shí)際效果,可直接進(jìn)行修改

          4:設(shè)計(jì)視圖:創(chuàng)建和編輯報(bào)表的結(jié)構(gòu)

          現(xiàn)在來看一看怎么創(chuàng)建復(fù)雜報(bào)表吧!

          工具/原料

          方法/步驟

          步驟一:在桌面上雙擊access圖標(biāo),進(jìn)入access軟件編輯視圖。

          access查詢功能 自動生成表_access查詢功能 自動生成表_access生成表查詢怎么做

          步驟二:進(jìn)入之后選擇你所須要的數(shù)據(jù)庫,然后進(jìn)入編輯頁面選擇創(chuàng)建選項(xiàng)卡你現(xiàn)在可以在這個(gè)功能組里面選擇你想要創(chuàng)建的報(bào)表類型,同時(shí)在創(chuàng)建選項(xiàng)卡里面你也可以創(chuàng)建查詢、窗體、還有宏和類模塊

          步驟三:選擇設(shè)計(jì)選項(xiàng)卡下面的“添加現(xiàn)有字段”然后在窗口的右邊會出現(xiàn)一個(gè)字段列表的浮動框,在這個(gè)里面你可以選擇你所需要的數(shù)據(jù)表,然后單擊選中拖動到編輯區(qū)域或者雙擊自動添加到編輯區(qū)域,

          步驟四:選中你所要排列的字段,接下來你可以在“排列”選項(xiàng)卡下選擇表格功能組,里面有一個(gè)“表格”命令單擊一下,你選中的字段就會有序的排列好 :樣式如下圖

          access查詢功能 自動生成表_access生成表查詢怎么做_access查詢功能 自動生成表

          步驟五:下面你可以為你得報(bào)表添加一些邊框,你現(xiàn)在須要選擇“設(shè)計(jì)”選項(xiàng)卡下的“工具組”下的“屬性表”你可以在屬性表里面設(shè)置他的各種屬性,現(xiàn)在選擇“全部”選項(xiàng)卡“下面有:邊框樣式,邊框?qū)挾龋吙蝾伾吞厥庑Ч?/p>

          步驟六:如果你想要設(shè)置你的時(shí)間或者日期,你可以在”設(shè)計(jì)“選項(xiàng)卡下”選擇“日期和時(shí)間”命令,想要設(shè)置你的“標(biāo)題”也可以在這里面設(shè)計(jì)

          步驟七:最后的效果如下圖,想要設(shè)置一些匯總或者排序你可以在"設(shè)計(jì)"選項(xiàng)卡下選擇分組和排序命令在里面可以設(shè)置你的排序字段和匯總字段,這里就不多加贅述

          END

          經(jīng)驗(yàn)內(nèi)容僅供參考,如果您需解決具體問題(尤其法律、醫(yī)學(xué)等領(lǐng)域),建議您詳細(xì)咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。


          主站蜘蛛池模板: 久久婷婷久久一区二区三区| 国产精品日韩欧美一区二区三区| 精品一区二区三区免费视频| 少妇特黄A一区二区三区| 爆乳无码AV一区二区三区| 国产高清不卡一区二区| 国产在线第一区二区三区| 国产精品久久久久久麻豆一区| 中文字幕精品一区 | 亚洲AV无码一区二区三区电影| 成人精品视频一区二区三区| 精品乱人伦一区二区| 99热门精品一区二区三区无码| 少妇无码一区二区三区| 久久久久一区二区三区| 国产午夜精品一区二区三区| 国产精品亚洲综合一区| 爆乳熟妇一区二区三区霸乳| 夜夜爽一区二区三区精品| 精品视频一区在线观看| 国产成人一区二区动漫精品 | 色国产在线视频一区| 国产成人精品一区二三区| 无码精品人妻一区二区三区人妻斩| 国精产品一区一区三区MBA下载| 国产激情无码一区二区app| 一区二区三区免费在线观看| 视频精品一区二区三区| 精品视频一区二区观看| 一区二区三区免费在线视频| 国产激情一区二区三区成人91| 一区二区三区在线播放| 国产一区二区在线观看app| 中文字幕一区二区三区日韩精品| 东京热无码一区二区三区av| 成人精品一区二区三区不卡免费看| 国产在线观看一区精品 | 国产高清视频一区二区| 国产在线视频一区二区三区| 日韩AV在线不卡一区二区三区| 久久亚洲中文字幕精品一区四|