Můžete použít sp_rename
uložená procedura systému k přejmenování CHECK
omezení na serveru SQL.
Účelem této uložené procedury je umožnit vám přejmenovat uživatelem vytvořené objekty v aktuální databázi. Můžete jej tedy použít i k přejmenování jiných objektů, 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_constraint_name', 'new_constraint_name';
Všimněte si, že v dokumentaci společnosti Microsoft je uvedeno, že při přejmenování omezení musíte kvalifikovat existující název názvem schématu.
Následující příklad ukazuje, jak přejmenovat CHECK
omezení.
Příklad 1 – Vyberte omezení pro přejmenování
Nejprve si vyjmenujme CHECK
omezení v databázi, takže se můžeme rozhodnout, kterou přejmenovat.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Výsledek:
+-----------------+----------+----------------+----------------------------------------+ | name | Schema | Table | definition | |-----------------+----------+----------------+----------------------------------------| | chkPrice | dbo | ConstraintTest | ([Price]>(0)) | | chkValidEndDate | dbo | ConstraintTest | ([EndDate]>=[StartDate]) | | chkTeamSize | dbo | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) | | chkJobTitle | dbo | Occupation | ([JobTitle]<>'Digital Nomad') | +-----------------+----------+----------------+----------------------------------------+
Pojďme přejmenovat druhé omezení ( chkValidEndDate ).
Odstraníme Platné část, takže se z ní stane pouze chkEndDate .
Příklad 2 – Přejmenování omezení
Spusťte toto pro přejmenování omezení.
sp_rename 'dbo.chkValidEndDate', 'chkEndDate';
Takže na prvním místě je staré (stávající) jméno, následované novým jménem.
Takže teď, když vyberu všechny CHECK
omezení, dostanu následující výsledek.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Výsledek:
+-------------+----------+----------------+----------------------------------------+ | name | Schema | Table | definition | |-------------+----------+----------------+----------------------------------------| | chkPrice | dbo | ConstraintTest | ([Price]>(0)) | | chkEndDate | dbo | ConstraintTest | ([EndDate]>=[StartDate]) | | chkTeamSize | dbo | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) | | chkJobTitle | dbo | Occupation | ([JobTitle]<>'Digital Nomad') | +-------------+----------+----------------+----------------------------------------+
Název omezení byl změněn.
Jak již bylo zmíněno, sp_rename
uložená procedura není omezena pouze na CHECK
omezení. Přesně stejnou syntaxi můžete použít k přejmenování omezení cizího klíče, tabulky, sloupce, datového typu aliasu nebo jakéhokoli jiného uživatelem definovaného objektu.
Společnost Microsoft však nedoporučuje přejmenovávat uložené procedury, spouštěče, uživatelem definované funkce nebo pohledy. V takových případech společnost Microsoft doporučuje místo toho objekt zrušit a znovu jej vytvořit s novým názvem.