AND 的参数必须是布尔类型,而不是 postgresql 中的整数类型
argument of AND must be type boolean, not type integer in postgresql
这是我做的触发函数。我想在这里做的是,如果 test_tx_out table 发生变化,触发功能被触发。变量被声明为布尔值,它存储 true 或 false。然后,我使用 select exists(...)
查询检查 test_address table 中是否已经存在地址,并将其存储在 boolAddress 中。 if 条件是如果 new.stake_address_id AND boolAddress
为真,则执行内部语句,否则执行其他 else 语句块,但我得到错误 argument of AND must be type boolean, not type integer in postgresql
。如何将 new.stake_address_id 转换为布尔值?好吧,我想如果 new.stake_address_id
不为空或 null,那就是真的。基本上,如果有值,我希望 new.stake_address_id 为真,否则为假。
CREATE OR REPLACE FUNCTION test_stake_addresses_tx_out_trigger()
RETURNS trigger AS $$
DECLARE
boolAddress BOOLEAN;
BEGIN
select exists (SELECT 1 FROM test_address where address = new.address) into boolAddress;
IF new.stake_address_id AND boolAddress THEN
UPDATE test_address
SET amount = amount + new.value
WHERE NEW.stake_address_id = test_address.id;
RETURN NEW;
ELSE
INSERT INTO test_address(id,address,amount)
VALUES(new.stake_address_id,new.address,new.value);
RETURN NEW;
END IF;
end;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER test1
AFTER INSERT
ON "test_tx_out"
FOR EACH ROW
EXECUTE PROCEDURE test_stake_addresses_tx_out_trigger();
Well, i thought if new.stake_address_id is not empty or null,
整数值不是布尔值(只能为空,不存在“空”整数)
如果你想要一个带有整数的布尔表达式,你需要将它与某些东西进行比较。如果要测试它是否不为空,请使用 is not null
if new.stake_address_id is not null and boolAddress then
这是我做的触发函数。我想在这里做的是,如果 test_tx_out table 发生变化,触发功能被触发。变量被声明为布尔值,它存储 true 或 false。然后,我使用 select exists(...)
查询检查 test_address table 中是否已经存在地址,并将其存储在 boolAddress 中。 if 条件是如果 new.stake_address_id AND boolAddress
为真,则执行内部语句,否则执行其他 else 语句块,但我得到错误 argument of AND must be type boolean, not type integer in postgresql
。如何将 new.stake_address_id 转换为布尔值?好吧,我想如果 new.stake_address_id
不为空或 null,那就是真的。基本上,如果有值,我希望 new.stake_address_id 为真,否则为假。
CREATE OR REPLACE FUNCTION test_stake_addresses_tx_out_trigger()
RETURNS trigger AS $$
DECLARE
boolAddress BOOLEAN;
BEGIN
select exists (SELECT 1 FROM test_address where address = new.address) into boolAddress;
IF new.stake_address_id AND boolAddress THEN
UPDATE test_address
SET amount = amount + new.value
WHERE NEW.stake_address_id = test_address.id;
RETURN NEW;
ELSE
INSERT INTO test_address(id,address,amount)
VALUES(new.stake_address_id,new.address,new.value);
RETURN NEW;
END IF;
end;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER test1
AFTER INSERT
ON "test_tx_out"
FOR EACH ROW
EXECUTE PROCEDURE test_stake_addresses_tx_out_trigger();
Well, i thought if new.stake_address_id is not empty or null,
整数值不是布尔值(只能为空,不存在“空”整数)
如果你想要一个带有整数的布尔表达式,你需要将它与某些东西进行比较。如果要测试它是否不为空,请使用 is not null
if new.stake_address_id is not null and boolAddress then