Oracle- Check datetime

Karel Zak zakkr na zf.jcu.cz
Středa Říjen 29 09:18:35 CET 2003


On Wed, Oct 29, 2003 at 08:51:15AM +0100, Honza Pazdziora wrote:
> On Wed, Oct 29, 2003 at 08:27:25AM +0100, Karel Zak wrote:
> > 
> >  IMHO  todle oduvodneni  ze starany  Oracle dost  kulha. Resit stav  kdy
> >  system neodpovida podminkam nutnym k provozovani nejake aplikace/dat na
> >  teto urovni  je podle mne  hloupost. Ostatne dotycny by se  pri exportu
> >  tech dat o nesplnene podmince urcite dovedel.
> 
> Pri importu.
> 
> Nicmene faktem je, ze obecne nemuzes mit v checku svou funkci. Proste
> proto, ze kdyz tu funkci predefinujes, tak to zmeni semantiku toho
> checku. Takze pak integrita jde do haje. A sysdate z tohohle pohledu

 Mala exkurze do sveta PostgreSQL (ja vim uz mama rikala, ze zlobim:-)

# CREATE FUNCTION aaa( int ) RETURNS bool AS 
    'SELECT CASE WHEN $1 > 130 THEN ''f''::bool ELSE ''t''::bool END;' 
  LANGUAGE 'SQL';

# CREATE TABLE tab (age int CHECK (aaa( age )));

# INSERT INTO tab VALUES (1);
INSERT 17149 1

# INSERT INTO tab VALUES (150);
ERROR:  new row for relation "tab" violates CHECK constraint "tab_age"

# DROP FUNCTION aaa( int );
NOTICE:  constraint tab_age on table tab depends on function aaa(integer)
ERROR:  cannot drop function aaa(integer) because other objects depend on it


# CREATE OR REPLACE FUNCTION aaa( int ) RETURNS bool AS 
    'SELECT CASE WHEN $1 > 120  THEN ''f''::bool ELSE ''t''::bool END;' 
  LANGUAGE 'SQL';

# INSERT INTO tab VALUES (120);
INSERT 17150 1

# INSERT INTO tab VALUES (121);
ERROR:  new row for relation "tab" violates CHECK constraint "tab_age"


    Karel


-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/


Další informace o konferenci Databases