Usando Expressão regular em Check Constraint, 10g e superior

https://www.vertaglia.com/dv4h0hu A um tempo atras tive que criar algumas check’s para bloquear palavras de um campo, hoje no lugar das dezenas de checks constraints que criei troquei todas por uma unica. Vou dar um exemplo simples mostrando como funciona e a expressao regular ajudou nesta questão. Exemplo: Bloquear o campo titulo da tabela gn_globo para que não receba referencias exatas da concorrencia nesta. A primeira idéia foi utilizar a função instr e minha check:

https://dentaris-sa.com/2024/05/13/pepl7709d4 ALTER TABLE gn_globo ADD constraint glb_titulo_ban_sbt_ck CHECK ( instr(lower(titulo), 'sbt') = 0 ); ALTER TABLE gn_globo ADD constraint glb_titulo_ban_record_ck CHECK ( instr(lower(titulo), 'record') = 0); ALTER TABLE gn_globo ADD constraint glb_titulo_ban_redetv_ck CHECK ( instr(lower(titulo), 'redetv') = 0 ); SQL> INSERT INTO gn_globo VALUES (1,'TEste de Texto'); 1 row created. SQL> INSERT INTO gn_globo VALUES (2,'Teste do Sbt reporter'); INSERT INTO gn_globo VALUES (2,'Teste do Sbt reporter') * ERROR at line 1: ORA-02290: CHECK constraint (RAFA.GLB_TITULO_BAN_SBT_CK) violated SQL> INSERT INTO gn_globo VALUES (3,'Teste do reCord reporter'); INSERT INTO gn_globo VALUES (3,'Teste do reCord reporter') * ERROR at line 1: ORA-02290: CHECK constraint (RAFA.GLB_TITULO_BAN_RECORD_CK) violated SQL> INSERT INTO gn_globo VALUES (4,'Teste do RedeTV reporter'); INSERT INTO gn_globo VALUES (4,'Teste do RedeTV reporter') * ERROR at line 1: ORA-02290: CHECK constraint (RAFA.GLB_TITULO_BAN_REDETV_CK) violated SQL> INSERT INTO gn_globo VALUES (5,'Teste do gn_globo reporter'); 1 row created.

https://photovisions.ca/w1r7myu81q Ahhhh legal, assim tenho também como controlar a cada check.
Mas acabei encontrando uma forma melhor para construi-las e com muito mais elegante:

see  

get link ALTER TABLE gn_globo DROP constraint glb_titulo_ban_sbt_ck; ALTER TABLE gn_globo DROP constraint glb_titulo_ban_record_ck; ALTER TABLE gn_globo DROP constraint glb_titulo_ban_redetv_ck; ALTER TABLE gn_globo ADD constraint glb_titulo_ban_ck CHECK ( NOT REGEXP_LIKE(titulo,'(sbt)|(record)|(redetv)' ,'i'));

Buy Valium Mastercard  

watch Assim tenho as 3 regras anteriores em uma unica regra simples e prática, utilizando expressão regular. Ref. REGEXP_LIKE Oracle Database Implementation of Regular Expressions

%name Usando Expressão regular em Check Constraint, 10g e superior

Autor: Rafael Stoever

Order Valium India

Buy Valium 2Mg Uk https://grannysglasses.com/?p=gz29hr8ff Bacharel em Sistema de Informação pela Uniasselvi, atualmente cursando Gerenciamento de Projetos em TI pela Pós Graduação Uniasselvi. Atuo como Analista de suporte https://restoreredspruce.org/2024/05/13/9chl8a24 a banco de dados – DBA pela Lumina Serviços em TI residente de Blumenau/ SC, enter OPN Certified Specialist, Certificado OCP 10g/11g/12c, OCE RAC10g e Linux 10g. Conhecimentos em Microsoft SqlSever, Mysql e programação web (php,asp).