मेरे शोध और प्रयोगों ने अभी तक उत्तर नहीं दिया है, इसलिए मैं कुछ मदद की उम्मीद कर रहा हूं।
मैं एक एप्लिकेशन की इंस्टॉल फ़ाइल को संशोधित कर रहा हूं जिसमें पिछले संस्करणों में एक कॉलम नहीं था जिसे मैं अब जोड़ना चाहता हूं। मैं स्तंभ को मैन्युअल रूप से जोड़ना नहीं चाहता, लेकिन स्थापना फ़ाइल में और केवल अगर नया स्तंभ तालिका में पहले से मौजूद नहीं है।
तालिका इस प्रकार बनाई गई है:
CREATE TABLE IF NOT EXISTS `#__comm_subscribers` (
`subscriber_id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL default '0',
`subscriber_name` varchar(64) NOT NULL default '',
`subscriber_surname` varchar(64) NOT NULL default '',
`subscriber_email` varchar(64) NOT NULL default '',
`confirmed` tinyint(1) NOT NULL default '0',
`subscribe_date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`subscriber_id`),
UNIQUE KEY `subscriber_email` (`subscriber_email`)
) ENGINE=MyISAM CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' COMMENT='Subscribers for Comm are stored here.';
यदि मैं तालिका तालिका कथन के नीचे निम्नलिखित जोड़ता हूं, तो मुझे यकीन नहीं है कि यदि स्तंभ पहले से मौजूद है (और शायद आबादी है):
ALTER TABLE `#__comm_subscribers` ADD `subscriber_surname`;
ALTER TABLE `#__comm_subscribers` MODIFY `subscriber_surname` varchar(64) NOT NULL default '';
इसलिए, मैंने निम्नलिखित कोशिश की जो मुझे कहीं मिली। यह काम नहीं करता है, लेकिन मुझे पूरा यकीन है कि मैंने इसे ठीक से इस्तेमाल किया है।
/*delimiter '//'
CREATE PROCEDURE addcol() BEGIN
IF NOT EXISTS(
SELECT * FROM information_schema.COLUMNS
WHERE COLUMN_NAME='subscriber_surname' AND TABLE_NAME='#__comm_subscribers'
)
THEN
ALTER TABLE `#__comm_subscribers`
ADD COLUMN `subscriber_surname` varchar(64) NOT NULL default '';
END IF;
END;
//
delimiter ';'
CALL addcol();
DROP PROCEDURE addcol;*/
किसी को भी यह करने के लिए एक अच्छा तरीका है?