Das stimmt nicht. Ich weiß aber auch nicht woran es sonst liegt.
Ich fasse den Fehler nochmal zusammen:
CREATE TABLE t_value (
Id INTEGER , /* Sequentially generated index /
Key DOUBLE PRECISION , / Key of entry (optional) /
zzTime TIMESTAMP , / Timestamp of value /
BatchId INTEGER , / Referenced batch /
CharacteristicId INTEGER , / Referenced characteristic /
Value DOUBLE PRECISION , / Measure value */
UNIQUE ( Id )
);
ALTER TABLE t_value OWNER TO postgres;
–FUNCTION
CREATE OR REPLACE FUNCTION t_value_inserttrigger() RETURNS TRIGGER AS ’
DECLARE
MonatsTabelle text;
aktuellerMonat double precision;
aktuellesJahr double precision;
MonatsDatum text;
naechsterMonat text;
TimeStampAktuellerMonatAnfang timestamp;
TimeStampNaechsterMonatAnfang timestamp;
MonatsTabelleExistiertBereits boolean;
BEGIN
aktuellerMonat := date_part(‘‘month’’, CURRENT_TIMESTAMP);
naechsterMonat := to_char(CURRENT_TIMESTAMP + interval ‘‘1 month’’ ,‘‘MM’’);
aktuellesJahr := date_part(‘‘year’’, CURRENT_TIMESTAMP);
TimeStampAktuellerMonatAnfang := date_trunc(‘‘month’’, CURRENT_TIMESTAMP);
TimeStampNaechsterMonatAnfang := date_trunc(‘‘month’’, CURRENT_TIMESTAMP + interval ‘‘1 month’’);
MonatsDatum := aktuellesJahr || aktuellerMonat;
MonatsTabelle := ‘‘t_value_’’ || MonatsDatum;
–Prüfen, ob die MonatsTabelle schon existiert
IF EXISTS (SELECT relname FROM pg_class WHERE relname = MonatsTabelle)
–hier “”“”“”““einfach nur””“”“”“” alles einfügen falls es mal klappt…
THEN
ELSE
EXECUTE ''CREATE TABLE ‘’ || MonatsTabelle || ‘’ (CHECK ( zzTime >= current_time AND zzTime < current_time ) ) INHERITS (t_value) ‘’;
EXECUTE ''ALTER TABLE ‘’ || MonatsTabelle || ‘’ OWNER TO postgres ‘’;
EXECUTE ‘‘INSERT INTO ‘’ || MonatsTabelle || ‘’ (Id, Key) VALUES (’’ || New.Id || ‘’,‘’ || New.Key || ‘’)‘’; --Diese Zeile führt er aus
EXECUTE ‘‘INSERT INTO ‘’ || MonatsTabelle || ‘’ (zzTime) VALUES (’’ || New.zzTime || ‘’)‘’; --Hier bringt er den Fehler
END IF;
RETURN NULL;
END; ’ LANGUAGE plpgsql;
ALTER FUNCTION t_value_inserttrigger() OWNER TO postgres;
–TRIGGER erstellen und ihm sagen, was er wann machen soll
CREATE TRIGGER insert_t_value_trigger
BEFORE INSERT ON t_value
FOR EACH ROW EXECUTE PROCEDURE t_value_inserttrigger();
Der besagt Fehler:
ERROR: syntax error at or near “13”
SQL Status:42601
kommt bei diesem Test-INSERT:
INSERT INTO t_value (Id, Key, zzTime, BatchId, CharacteristicId, Value)
VALUES (1,257,‘2010-04-05 13:39:34.312’,4,1,0);
Ich bin ziemlich sicher, dass er mit der Uhrzeit in der Variable zzTime nicht klar kommt. Aber warum ???
Es ist doch alles was damit zu tun hat TIMESTAMP… ?
Weiß jemand Rat?