我有一个触发器。
CREATE OR REPLACE FUNCTION asset_constraint() RETURNS trigger AS $$
DECLARE
max_assets INTEGER := 2;
assets_count INTEGER := 0;
must_check BOOLEAN := false;
BEGIN
IF TG_OP = 'INSERT' THEN
must_check := true;
END IF;
IF TG_OP = 'UPDATE' THEN
IF (NEW.name != OLD.name) THEN
must_check := true;
END IF;
END IF;
IF must_check THEN
-- prevent concurrent inserts from multiple transactions
LOCK TABLE assets IN EXCLUSIVE MODE;
SELECT INTO assets_count COUNT(*)
FROM assets;
--WHERE name = NEW.name;
IF assets_count >= max_assets THEN
RAISE EXCEPTION 'no puede añadir mas de % assets.', max_assets;
END IF;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER asset_constraint
BEFORE INSERT OR UPDATE ON assets
FOR EACH ROW EXECUTE PROCEDURE asset_constraint();
触发器正常工作,如果它计数超过2条记录,则它将发送异常。
现在,我不知道我们是否可以直接使用laravel中的验证程序来执行此操作,而无需触发器。我需要为消息使用javascript“ toast”功能,而不是橙色图片所示的异常。
用户通知运行良好,当我执行CRUD时,我使用ajax,请求和吐司。
如果发生异常,则在请求文件中自定义消息,例如...,并在右侧将其显示为“吐司”消息。
我真的不知道该怎么做,是否要离开触发器并制作一个捕获它的验证器,或者制作一个没有触发器的自定义验证器。