所以问题是我有两个表,在插入或更新一个表上的值之前,我必须检查另一个表是否包含新值我尝试插入/更新如下:
CREATE TABLE categoriasimples(
nome varchar(64) PRIMARY KEY REFERENCES categoria(nome) ON DELETE CASCADE);
CREATE TABLE supercategoria(
nome varchar(64) PRIMARY KEY REFERENCES categoria(nome) ON DELETE CASCADE);
CREATE FUNCTION check_categoria_type_sup() RETURNS trigger AS $check_categoria_type_sup$
BEGIN
IF nome FROM categoriasimples WHERE (NEW.nome = CategoriaSimples.nome) IS NOT NULL THEN
RAISE EXCEPTION 'Uma categoria nao pode ser super e simples ao mesmo tempo!';
END IF;
RETURN NEW;
END;
$check_categoria_type_sup$ LANGUAGE plpgsql;
CREATE TRIGGER check_categoria_type_sup BEFORE INSERT OR UPDATE ON supercategoria FOR EACH ROW EXECUTE PROCEDURE check_categoria_type_sup();
CREATE FUNCTION check_categoria_type_simp() RETURNS trigger AS $check_categoria_type_simp$
BEGIN
IF nome FROM supercategoria WHERE (supercategoria.nome = NEW.nome) IS NOT NULL THEN
RAISE EXCEPTION 'Uma categoria nao pode ser simples e super ao mesmo tempo!';
END IF;
RETURN NEW;
END;
$check_categoria_type_simp$ LANGUAGE plpgsql;
CREATE TRIGGER check_categoria_type_simp BEFORE INSERT OR UPDATE ON categoriasimples FOR EACH ROW EXECUTE PROCEDURE check_categoria_type_simp();
我可以在一个表中插入值,但如果我尝试在另一个表中插入,则表示:
错误:boolean类型的输入语法无效:" bife" (在另一个表中的值) 语境:PL / pgSQL函数check_categoria_type_sup()IF的第3行 SQL状态:22P02
答案 0 :(得分:1)