Penelitian dan eksperimen saya belum membuahkan jawaban, jadi saya mengharapkan bantuan.
Saya memodifikasi file instal aplikasi yang di versi sebelumnya tidak memiliki kolom yang ingin saya tambahkan sekarang. Saya tidak ingin menambahkan kolom secara manual, tetapi di file instalasi dan hanya jika kolom baru belum ada di tabel.
Tabel dibuat sebagai berikut:
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.';
Jika saya menambahkan yang berikut ini, di bawah pernyataan buat tabel, maka saya tidak yakin apa yang terjadi jika kolom tersebut sudah ada (dan mungkin terisi):
ALTER TABLE `#__comm_subscribers` ADD `subscriber_surname`;
ALTER TABLE `#__comm_subscribers` MODIFY `subscriber_surname` varchar(64) NOT NULL default '';
Jadi, saya mencoba yang berikut yang saya temukan di suatu tempat. Ini sepertinya tidak berhasil tetapi saya tidak sepenuhnya yakin saya menggunakannya dengan benar.
/*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;*/
Adakah yang punya cara yang baik untuk melakukan ini?