Você pode usar o
sp_rename
procedimento armazenado do sistema para renomear um CHECK
restrição no SQL Server. A finalidade desse procedimento armazenado é permitir que você renomeie objetos criados pelo usuário no banco de dados atual. Portanto, você também pode usá-lo para renomear outros objetos, como tabelas, colunas, tipos de dados de alias, etc.
Sintaxe
A sintaxe de
sp_rename
fica assim:sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ]
Então seu código poderia ficar assim:
sp_rename 'schema_name.old_constraint_name', 'new_constraint_name';
Observe que a documentação da Microsoft afirma que, ao renomear restrições, você deve qualificar o nome existente com o nome do esquema.
O exemplo a seguir demonstra como renomear um
CHECK
limitação. Exemplo 1 – Escolha uma restrição para renomear
Primeiro, vamos listar o
CHECK
restrições no banco de dados, para que possamos decidir qual renomear. SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Resultado:
+-----------------+----------+----------------+----------------------------------------+ | 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') | +-----------------+----------+----------------+----------------------------------------+
Vamos renomear a segunda restrição ( chkValidEndDate ).
Vamos remover o Válido parte para que se torne apenas chkEndDate .
Exemplo 2 – Renomear a restrição
Execute isso para renomear a restrição.
sp_rename 'dbo.chkValidEndDate', 'chkEndDate';
Portanto, o nome antigo (existente) vem primeiro, seguido pelo novo nome.
Então agora se eu selecionar todos os
CHECK
restrições novamente, recebo o seguinte resultado. SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Resultado:
+-------------+----------+----------------+----------------------------------------+ | 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') | +-------------+----------+----------------+----------------------------------------+
O nome da restrição foi alterado.
Como mencionado, o
sp_rename
procedimento armazenado não se limita apenas a CHECK
restrições. Você pode usar exatamente a mesma sintaxe para renomear uma restrição de chave estrangeira, uma tabela, coluna, tipo de dados de alias ou qualquer outro objeto definido pelo usuário. No entanto, a Microsoft não recomenda renomear procedimentos armazenados, gatilhos, funções definidas pelo usuário ou exibições. Nesses casos, a Microsoft recomenda que você descarte o objeto e o recrie com o novo nome.