Masalah Anda adalah bahwa Anda tidak secara eksplisit menyebutkan kendala Anda. Ini meninggalkan setiap database untuk memilih nama untuk Anda. Triknya di sini adalah memberi nama batasan kunci asing Anda secara eksplisit, saat Anda membuat tabel aktual di MySQL dan MariaDB:
CREATE TABLE job_template (
...,
parent_id int NOT NULL,
CONSTRAINT your_constraint FOREIGN KEY fk_name (parent_id)
REFERENCES job_template(id) ON DELETE CASCADE
);
Tetapi memperbaiki situasi langsung Anda akan membutuhkan lebih banyak pekerjaan. Salah satu opsi adalah menanyakan tabel skema informasi, untuk tabel yang terlibat, untuk mengetahui nama kendala yang sebenarnya:
USE INFORMATION_SCHEMA;
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM KEY_COLUMN_USAGE
WHERE
TABLE_SCHEMA = 'your_db' AND
TABLE_NAME = 'job_template' AND
REFERENCED_COLUMN_NAME IS NOT NULL;
Ini harus mengembalikan satu catatan untuk setiap kolom dan batasan. Dengan informasi ini, Anda seharusnya dapat menjalankan pernyataan perubahan Anda saat ini.
Ini cukup mudah dilakukan dengan menggunakan alat seperti Java, atau yang serupa. Jika Anda ingin melakukannya langsung dari database, maka Anda memerlukan SQL dinamis, yang mungkin berarti menulis prosedur tersimpan.