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