<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Sprawdzenie formatu danych przed zapisem do tabeli]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=1094</link>
		<description><![CDATA[Najświeższe odpowiedzi w Sprawdzenie formatu danych przed zapisem do tabeli.]]></description>
		<lastBuildDate>Wed, 14 Mar 2012 21:50:48 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Sprawdzenie formatu danych przed zapisem do tabeli]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3536#p3536</link>
			<description><![CDATA[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);]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Wed, 14 Mar 2012 21:50:48 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3536#p3536</guid>
		</item>
		<item>
			<title><![CDATA[Sprawdzenie formatu danych przed zapisem do tabeli]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3210#p3210</link>
			<description><![CDATA[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?]]></description>
			<author><![CDATA[dummy@example.com (Rayo)]]></author>
			<pubDate>Wed, 09 Nov 2011 21:11:07 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3210#p3210</guid>
		</item>
	</channel>
</rss>
