Váš problém je v tom, že svá omezení výslovně nepojmenujete. To umožňuje každé databázi vybrat si jméno za vás. Trik je v tom pojmenovat svá omezení cizích klíčů explicitně, když vytváříte skutečné tabulky na MySQL i 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
);
Ale náprava vaší okamžité situace by vyžadovala více práce. Jednou z možností by bylo dotazovat se na tabulku informačních schémat pro příslušnou tabulku, abyste zjistili skutečné názvy omezení:
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;
To by mělo vrátit jeden záznam pro každý sloupec a omezení. S těmito informacemi byste měli být schopni spustit své aktuální změny příkazů.
To je snadné udělat pomocí nástroje, jako je Java nebo něco podobného. Pokud to chcete udělat přímo z databáze, budete potřebovat dynamické SQL, což pravděpodobně znamená napsat uloženou proceduru.