.comment-link {margin-left:.6em;}

Tuesday, June 06, 2006

Check Contrainst (NOT NULL dependente)

Dúvida

Bom dia Pessoal!
Seguinte, Tenho uma tabela(Fornecedor e cliente etc...) que possui
varios dados e dependendo de um campo TIPO(Fornecedor e cliente
etc...) alguns campos serão NOT NULL ou não. isso é possivel a nivel
de banco? Uma Check Constraints será? e como seria o codigo?
alguma outra sugestão?


Crei uma tabela t com os campos ( pode_nulo e valor ).
Baseado no pode_nulo, onde há uma constraint permitindo somente [S]im ou [N]ão, outra constraint de check verifica se o pode_nulo é SIM então não há outro check, OU pode_nulo é NÃO e o valor NÃO PODE SER NULO.


SQL> create table t (
2 pode_nulo char(1)
3 constraint podenulo_chk check ( pode_nulo in ( 'S', 'N' )),
4 valor number,
5 constraint valor_chk check (
6 ( pode_nulo = 'S' ) or
7 ( pode_nulo = 'N' and valor is not null )
8 )
9 );

Table created.

SQL> insert into t values ( 'N', 1 );

1 row created.

SQL> insert into t values ( 'S', null );

1 row created.

SQL> insert into t values ( 'N', null );
insert into t values ( 'N', null )
*
ERROR at line 1:
ORA-02290: check constraint (OPS$MARCIO.VALOR_CHK) violated


SQL>
SQL> select * from t;

P VALOR
- -------------
N 1
S

Labels:


Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?