Puoi usare sp_rename
stored procedure di sistema per rinominare un CHECK
vincolo in SQL Server.
Lo scopo di questa procedura memorizzata è consentire di rinominare gli oggetti creati dall'utente nel database corrente. Quindi puoi anche usarlo per rinominare altri oggetti come tabelle, colonne, tipi di dati alias, ecc.
Sintassi
La sintassi di sp_rename
va così:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ]
Quindi il tuo codice potrebbe essere qualcosa del genere:
sp_rename 'schema_name.old_constraint_name', 'new_constraint_name';
Si noti che la documentazione Microsoft afferma che quando si rinominano i vincoli è necessario qualificare il nome esistente con il nome dello schema.
L'esempio seguente mostra come rinominare un CHECK
vincolo.
Esempio 1:scegli un vincolo da rinominare
Per prima cosa, elenchiamo il CHECK
vincoli nel database, così possiamo decidere quale rinominare.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Risultato:
+-----------------+----------+----------------+----------------------------------------+ | 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') | +-----------------+----------+----------------+----------------------------------------+
Rinominiamo il secondo vincolo ( chkValidEndDate ).
Rimuoviamo il Valido parte in modo che diventi solo chkEndDate .
Esempio 2:rinominare il vincolo
Esegui questo per rinominare il vincolo.
sp_rename 'dbo.chkValidEndDate', 'chkEndDate';
Quindi il vecchio nome (esistente) viene prima, seguito dal nuovo nome.
Quindi ora seleziono tutti i CHECK
vincoli di nuovo, ottengo il seguente risultato.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Risultato:
+-------------+----------+----------------+----------------------------------------+ | 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') | +-------------+----------+----------------+----------------------------------------+
Il nome del vincolo è stato modificato.
Come accennato, il sp_rename
stored procedure non si limita al solo CHECK
vincoli. Puoi utilizzare esattamente la stessa sintassi per rinominare un vincolo di chiave esterna, una tabella, una colonna, un tipo di dati alias o qualsiasi altro oggetto definito dall'utente.
Tuttavia, Microsoft sconsiglia di rinominare stored procedure, trigger, funzioni definite dall'utente o visualizzazioni. In questi casi, Microsoft consiglia invece di eliminare l'oggetto e di ricrearlo con il nuovo nome.