init push
This commit is contained in:
43
migrations/20260626_helicopters_deleted_at_nullable.sql
Normal file
43
migrations/20260626_helicopters_deleted_at_nullable.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
-- Add deleted_at to helicopters so takeover and usage queries can safely filter active rows.
|
||||
|
||||
SET @schema_name := DATABASE();
|
||||
SET @has_helicopters := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = @schema_name
|
||||
AND TABLE_NAME = 'helicopters'
|
||||
);
|
||||
|
||||
SET @has_deleted_at := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @schema_name
|
||||
AND TABLE_NAME = 'helicopters'
|
||||
AND COLUMN_NAME = 'deleted_at'
|
||||
);
|
||||
|
||||
SET @sql_add_deleted_at := IF(
|
||||
@has_helicopters > 0 AND @has_deleted_at = 0,
|
||||
'ALTER TABLE helicopters ADD COLUMN deleted_at DATETIME(6) NULL AFTER updated_at',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt_add_deleted_at FROM @sql_add_deleted_at;
|
||||
EXECUTE stmt_add_deleted_at;
|
||||
DEALLOCATE PREPARE stmt_add_deleted_at;
|
||||
|
||||
SET @idx_deleted_at_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = @schema_name
|
||||
AND TABLE_NAME = 'helicopters'
|
||||
AND INDEX_NAME = 'idx_helicopters_deleted_at'
|
||||
);
|
||||
|
||||
SET @sql_add_deleted_at_idx := IF(
|
||||
@has_helicopters > 0 AND @has_deleted_at > 0 AND @idx_deleted_at_exists = 0,
|
||||
'ALTER TABLE helicopters ADD INDEX idx_helicopters_deleted_at (deleted_at)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt_add_deleted_at_idx FROM @sql_add_deleted_at_idx;
|
||||
EXECUTE stmt_add_deleted_at_idx;
|
||||
DEALLOCATE PREPARE stmt_add_deleted_at_idx;
|
||||
Reference in New Issue
Block a user