Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Diferenças entre DBC e SQL
Message
 
À
06/09/2005 15:51:28
Peter Wagner
Point Informática Ltda.
Limeira, Brésil
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Divers
Thread ID:
01046086
Message ID:
01047704
Vues:
8
Peter,

Estava pensando no seguinte... Observe as duas mensagens de erro abaixo:

1526 - [Microsoft][ODBC SQL Server Driver][SQL Server]INSERT statement conflicted with COLUMN CHECK constraint 'Clientes_Cfp_Formato'. The conflict occurred in database 'Estudo', table 'Clientes', column 'Cpf'.

1526 - [Microsoft][ODBC SQL Server Driver][SQL Server]Violation of UNIQUE KEY constraint 'Clientes_CPF_Unico'. Cannot insert duplicate key in object 'Clientes'.


Nestes dois casos, eu recebo o nome da constraint que causou o erro: Clientes_Cpf_Formato e Clientes_CPF_Unico - certo?

Bom... Pensei em criar uma tabela interna do sistema (ou até mesmo no SQL Server) com a seguinte estrutura:
Regra                          Mensagem
Clientes_Cpf_Formato           CPF/CNPJ inválido
Clientes_CPF_Unico             CPF/CNPJ duplicado
Depois, isolo o nome da constraint que causou o erro. Faço um select na tabela SQLErros e acho a mensagem que irá para o usuário.
Se não encontrar a REGRA (ou o campo mensagem estiver vazio), mostro a própria mensagem do SQL pro usuário e gero um registro em branco nesta tabela de erros. Assim, basta eu filtrar as mensagens em branco para saber quais Regras já aconteceram e eu não fiz a mensagem de erro ainda.

Estou começando no SQL e não sei se vai acontecer alguma situação onde isso não funcionaria... Você sabe me dizer?

Para facilitar, pensei em criar nomes para constraint do tipo: ERRO_Clientes_Cpf_Formato_ERRO e usar StrExtract com os limitadores ERRO_ e _ERRO para pegar a string que vou procurar na tabela SQLErros!

[]s!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Rodolfo Duarte
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform