Test inserted text in trigger (arrays, custom types)
От | Arda Çeşmecioğlu |
---|---|
Тема | Test inserted text in trigger (arrays, custom types) |
Дата | |
Msg-id | 4F475BB2.1010303@gmail.com обсуждение исходный текст |
Список | pgsql-novice |
Hello people, I tried to compose a header that sums up the question :). Now to the actual question; I do the following DROP TABLE IF EXISTS mytable; DROP TYPE IF EXISTS mytype; CREATE TYPE mytype AS ( a_nr Numeric(18,7), a_text Text ); CREATE TABLE mytable( id Serial NOT NULL PRIMARY KEY, some_col mytype[] NOT NULL ); CREATE OR REPLACE FUNCTION chk_mytab_input() RETURNS TRIGGER LANGUAGE 'plpgsql' VOLATILE AS $BODY$ BEGIN -- for all some_col FOR c IN array_lower(NEW.some_col,1)..array_upper(NEW.some_ col,1) LOOP RAISE INFO '%', (NEW.some_col[c]).a_text IS DISTINCT FROM 'VA'; RAISE INFO '%', (NEW.some_col[c]).a_text = 'VA'; END LOOP; RETURN NEW; END $BODY$; CREATE TRIGGER trig_chk_mytab_input BEFORE INSERT OR UPDATE ON mytable FOR EACH ROW EXECUTE PROCEDURE chk_mytab_input(); and then when I insert some data with INSERT INTO mytable VALUES ( DEFAULT, '{ "(55, VA)", "(1000, VA)" }' ); I get the following output (the two "RAISE INFO ..." statements): INFO: t INFO: f INFO: t INFO: f but I expect all "t"s. So this means (I think) the VA in "(55, VA)" statement is not the same with the VA in " RAISE INFO '%', (NEW.some_col[c]).a_text = 'VA' " . But why? Thanks in advance.
В списке pgsql-novice по дате отправления: