1

Temat: Sprawdzenie formatu danych przed zapisem do tabeli

W tabeli mam kolumnę typu 'date'. Dane to tabeli przesyłane są zewnętrznego programu. Podczas gdy użytkownik w programie wyczyści pole z datą program ten przesyła do bazy informację, że do pola data należy wpisać pusty łańcuch znaków (''). Baza z kolei odpowiada komunikatem, że '' nie jest poprawnym typem danych 'date'.
Jak można po stronie bazy najpierw sprawdzić, czy wartość pola jest ='', zamienić to na NULL, a dopiero potem zapisać w tabeli?
Próbowałem triggera i reguły, ale wygląda na to, że baza sprawdza poprawność formatu wcześniej, niż uruchomi triggera lub regułę.

Rozwiązałem problem tworząc tabelę pośrednią z kolumną data typu 'character varing', sprawdzam dane triggerem, ewentualnie zamieniam, a na końcu dopiero przepisuję do tabeli właściwej.

Może ktoś zna jednak prostsze i bardziej eleganckie rozwiązanie?

2

Odp: Sprawdzenie formatu danych przed zapisem do tabeli

jeśli ma być to tylko proste sprawdzenie pustego ciągu to proponuje wykonać to tak

- dla pustego ciągu
insert into tabela (data) values ((case when length ('')=0 then null else '' end)::date);
- i dla ciągu nie pustego
insert into tabela (data) values ((case when length ('2012-01-01')=0 then null else '2012-01-01' end)::date);