41 lines
1.4 KiB
SQL
41 lines
1.4 KiB
SQL
-- Safely add the column.
|
|
SET @dbname = DATABASE();
|
|
SET @tablename = 'school_cycles';
|
|
SET @columnname = 'global_cycle_id';
|
|
SET @preparedStatement = (SELECT IF(
|
|
(
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE
|
|
(table_name = @tablename)
|
|
AND (table_schema = @dbname)
|
|
AND (column_name = @columnname)
|
|
) > 0,
|
|
"SELECT 1",
|
|
CONCAT("ALTER TABLE ", @tablename, " ADD ", @columnname, " INT UNSIGNED NULL AFTER center_application_id;")
|
|
));
|
|
PREPARE alterIfNotExists FROM @preparedStatement;
|
|
EXECUTE alterIfNotExists;
|
|
DEALLOCATE PREPARE alterIfNotExists;
|
|
|
|
-- Safely add foreign key
|
|
SET @fkname = 'fk_school_cycles_global_cycle';
|
|
SET @preparedStatement = (SELECT IF(
|
|
(
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
|
|
WHERE
|
|
(table_name = @tablename)
|
|
AND (table_schema = @dbname)
|
|
AND (constraint_name = @fkname)
|
|
) > 0,
|
|
"SELECT 1",
|
|
CONCAT("ALTER TABLE ", @tablename, " ADD CONSTRAINT ", @fkname, " FOREIGN KEY (", @columnname, ") REFERENCES global_cycles(id) ON DELETE SET NULL;")
|
|
));
|
|
PREPARE alterIfNotExists FROM @preparedStatement;
|
|
EXECUTE alterIfNotExists;
|
|
DEALLOCATE PREPARE alterIfNotExists;
|
|
|
|
-- We can make season/year nullable or give defaults, since we will use global cycles instead.
|
|
-- We'll just alter them to allow NULL
|
|
ALTER TABLE school_cycles MODIFY season VARCHAR(20) NULL;
|
|
ALTER TABLE school_cycles MODIFY year SMALLINT UNSIGNED NULL;
|