Můžete použít sp_rename
systémová uložená procedura k přejmenování omezení cizího klíče v SQL Server.
Účelem této uložené procedury je umožnit vám přejmenovat uživatelem vytvořené objekty v aktuální databázi, takže můžete přejmenovat i jiné objekty, jako jsou tabulky, sloupce, aliasové datové typy atd.
Syntaxe
Syntaxe sp_rename
vypadá takto:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ]
Takže váš kód by mohl vypadat nějak takto:
sp_rename 'schema_name.old_fk_name', 'new_fk_name';
Všimněte si, že dokumentace společnosti Microsoft uvádí, že při přejmenovávání omezení (jako jsou cizí klíče) musíte kvalifikovat existující název názvem schématu.
Pokud schéma vynecháte, může nebo nemusí se zobrazit chyba, ale pravděpodobně je dobré řídit se radami společnosti Microsoft ohledně tohoto schématu.
Následující příklad mi ukazuje přejmenování cizího klíče.
Příklad 1 – Kontrola všech cizích klíčů
Nejprve se podívám na cizí klíče v databázi (abych se mohl rozhodnout, který přejmenovat).
SELECT name AS 'Foreign Key', SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table' FROM sys.foreign_keys;
Výsledek:
+--------------------------------+----------+---------+--------------------+ | Foreign Key | Schema | Table | Referenced Table | |--------------------------------+----------+---------+--------------------| | FK_Albums_Artists | dbo | Albums | Artists | | FK_Albums_Genres | dbo | Albums | Genres | | FK__Artists__Country__4AB81AF0 | dbo | Artists | Country | +--------------------------------+----------+---------+--------------------+
Třetí cizí klíč ( FK__Artists__Country__4AB81AF0 ) byl pojmenován systémem. Systém to pojmenoval, protože jsem při vytváření zapomněl uvést název.
Pojmenujme tento cizí klíč stručněji.
Příklad 2 – Přejmenování cizího klíče
Zde je bit, který přejmenuje cizí klíč.
sp_rename 'dbo.FK__Artists__Country__4AB81AF0', 'FK_Artists_Country';
Jak již bylo zmíněno, na prvním místě je staré (stávající) jméno a poté nové.
Takže když teď vyberu všechny cizí klíče, dostanu následující výsledek.
SELECT name AS 'Foreign Key', SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table' FROM sys.foreign_keys;
Výsledek:
+--------------------+----------+---------+--------------------+ | Foreign Key | Schema | Table | Referenced Table | |--------------------+----------+---------+--------------------| | FK_Albums_Artists | dbo | Albums | Artists | | FK_Albums_Genres | dbo | Albums | Genres | | FK_Artists_Country | dbo | Artists | Country | +--------------------+----------+---------+--------------------+
Úspěšně jsem přejmenoval cizí klíč.