2017-07-18 33 views
1

在opencart2.0中,我想創建一個ocmod擴展,在install.sql中,我需要修改數據庫字段。當我修改數據庫字段時,我需要確定該字段是否存在。我曾嘗試過多種變體,但它們都不起作用。有任何想法嗎?提前致謝。在opencart2.0中,我想創建一個ocmod擴展。在install.sql中,如何確定數據庫字段是否存在?

這是我的install.sql,但錯誤

DROP PROCEDURE IF EXISTS add_col_need_credit; 
DELIMITER $$ CREATE PROCEDURE add_col_need_credit() BEGIN IF NOT EXISTS(SELECT column_name FROM information_schema.columns WHERE table_name='oc_customer_group_description' AND column_name='need_credit') THEN ALTER TABLE `oc_customer_group_description` ADD `need_credit` numeric(10,4) NOT NULL default 0; END IF;END$$ DELIMITER ; 
CALL add_col_need_credit(); 
+0

這是我的install.sql,但這是錯誤的。 **如果出現add_col_need_credit,則刪除程序;如果不存在(SELECT column_name FROM information_schema.columns WHERE table_name ='oc_customer_group_description'AND column_name ='need_credit')THEN ALTER TABLE'oc_customer_group_description' ADD'need_credit' numeric(10,4)NOT(0)NOT_INFO_ERROR NULL默認爲0; END IF; END $$ DELIMITER; CALL add_col_need_credit(); ** – vincenth520

+0

更新您的問題而不是評論。 – ASR

+0

更新,你看,認爲 – vincenth520

回答

1

這不是錯誤,你可以在MySQL控制檯使用

DROP PROCEDURE IF EXISTS add_col_need_credit; 
DELIMITER $$ CREATE PROCEDURE add_col_need_credit() BEGIN IF NOT EXISTS(SELECT column_name FROM information_schema.columns WHERE table_name='oc_customer_group_description' AND column_name='need_credit') THEN ALTER TABLE `oc_customer_group_description` ADD `need_credit` numeric(10,4) NOT NULL default 0; END IF;END$$ DELIMITER ; 
CALL add_col_need_credit(); 
1
DROP PROCEDURE IF EXISTS add_col_need_credit; 
DELIMITER $$ CREATE PROCEDURE add_col_need_credit() BEGIN IF NOT EXISTS(SELECT column_name FROM information_schema.columns WHERE table_name='oc_customer_group_description' AND column_name='need_credit') THEN ALTER TABLE `oc_customer_group_description` ADD `need_credit` numeric(10,4) NOT NULL default 0; END IF;END$$ DELIMITER ; 
CALL add_col_need_credit(); 
相關問題