如何确定触发器内的列值是否为INTEGER?

时间:2015-01-27 08:48:41

标签: postgresql postgresql-9.4

这是由BEFORE UPDATE触发器

执行的func的骨架
CREATE OR REPLACE FUNCTION increment_indexes()
RETURNS trigger AS
$BODY$
BEGIN
  IF -- ???

  END IF;
END;
$BODY$ LANGUAGE plpgsql;

如果IFNEW.mycol而不是某些字面值,我需要确定(使用INTEGER语句)。所以IF条件应该返回true:

UPDATE mytable SET mycol = 11 WHERE mycol = 10

和false表示:

UPDATE mytable SET mycol = mycol + 1 WHERE mycol = 10

1 个答案:

答案 0 :(得分:0)

如果您正在寻找如何确定列值是否为整数,您可以使用此函数,取自archives.postgresql.org

CREATE FUNCTION isnumeric(text) RETURNS boolean AS '
SELECT $1 ~ ''^[0-9]+$''
' LANGUAGE 'sql';

但是你的两次更新会给你我想的相同结果。