2013-12-16 50 views
0

我已經開始使用MySQL數據庫,每月有10Gb的新數據。 開票有生產和開發版本。我該如何防止像ALTER TABLE ....這樣的查詢的反覆執行?

程序員創建補丁程序,並在更新每個補丁程序時逐個應用程序。 這不是DB修補的最佳方式,但此時我們無能爲力。

我們有像

ALTER TABLE `Customer` ADD FOREIGN KEY ( `contract_id`) REFERENCES `Document` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION ; 

查詢,我發現這個查詢每次補丁aplying它創建表之間的參考。 當有mo時,表中有100 000 000條記錄,這是非常緩慢和錯誤的。

我可以做些什麼,這將阻止此查詢的第二次執行?可給予一定的名稱引用&

回答

2

您可以使用此風格:

IF NOT EXISTS (SELECT NULL FROM information_schema.TABLE_CONSTRAINTS WHERE 
       CONSTRAINT_SCHEMA = DATABASE() AND 
       CONSTRAINT_NAME = 'contract_document' AND 
       CONSTRAINT_TYPE = 'FOREIGN KEY') THEN 
    ALTER TABLE `Customer` ADD CONSTRAINT `contract_document` 
         FOREIGN KEY (`contract_id`) 
         REFERENCES `Document` (`id`); 
END IF 
相關問題