ALTER TABLE Student ADD CONSTRAINT CHK_Student_ID_LENGTH CHECK (LEN([ID]) between 12 and 14);
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_NAME = 'CHK_Student_ID_LENGTH';
alter table Student drop constraint CHK_Student_ID_LENGTH;
Tentei adicionar restrição de verificação usando a primeira instrução. Isso me deu o erro abaixo.
[23000] [547] A instrução ALTER TABLE entrou em conflito com a restrição CHECK "CHK_Student_ID_LENGTH". O conflito ocorreu na base de dados, tabela "Aluno", coluna 'ID'.
Tentei verificar se havia alguma restrição existente com o mesmo nome. Mas eu não recebi nenhum. Mesmo assim, tentei abandonar a restrição. Mas então deu o erro:
CHK_Student_ID_LENGTH não é uma restrição.
Mas ainda adicionar instrução de restrição dá erro dizendo que já existe. Onde eu estou errando?
A mensagem de erro está um pouco mal formulada, mas não está dizendo o que você pensa que está dizendo.
Não quer dizer que já exista uma restrição com o mesmo nome. Está dizendo que a restrição está sendo violada. Isso significa que já existem dados na tabela que não atendem aos requisitos da nova restrição que você está tentando introduzir.
Você pode usar a NOCHECK
opção de criar a restrição enquanto permite que os dados existentes a violem. Mas isso é freqüentemente a coisa errada a se fazer. Normalmente é mais sensato corrigir os dados existentes.
Especificar NOCHECK
significa que a restrição não pode ser usada pelo otimizador para eliminar ações redundantes que a lógica da restrição impediria.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras