sql >> Databáze >  >> RDS >> Sqlserver

Přejmenujte cizí klíč v SQL Server pomocí T-SQL

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íč.


  1. Problémy při používání Microsoft Access Runtime

  2. Jaký je rozdíl mezi MyISAM a InnoDB?

  3. SQL VIEW

  4. Proč pořadí řazení varchar společnosti Oracle neodpovídá chování srovnání varchar?