Tuesday, June 06, 2006
Check Contrainst (NOT NULL dependente)
Dúvida
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.
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: how to