36 lines
701 B
Ruby
36 lines
701 B
Ruby
![]() |
class AddForeignKeyOnPipelineScheduleOwner < ActiveRecord::Migration
|
||
|
include Gitlab::Database::MigrationHelpers
|
||
|
|
||
|
DOWNTIME = false
|
||
|
|
||
|
disable_ddl_transaction!
|
||
|
|
||
|
def up
|
||
|
execute <<-SQL
|
||
|
UPDATE ci_pipeline_schedules
|
||
|
SET owner_id = NULL
|
||
|
WHERE NOT EXISTS (
|
||
|
SELECT true
|
||
|
FROM users
|
||
|
WHERE ci_pipeline_schedules.owner_id = users.id
|
||
|
)
|
||
|
SQL
|
||
|
|
||
|
add_concurrent_foreign_key(:ci_pipeline_schedules, :users, column: :owner_id, on_delete: on_delete)
|
||
|
end
|
||
|
|
||
|
def down
|
||
|
remove_foreign_key(:ci_pipeline_schedules, column: :owner_id)
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def on_delete
|
||
|
if Gitlab::Database.mysql?
|
||
|
:nullify
|
||
|
else
|
||
|
'SET NULL'
|
||
|
end
|
||
|
end
|
||
|
end
|