相关疑难解决方法(0)

如何在触发器功能中使用变量设置?

我想在会话/事务中记录用户的id,使用SET,所以我以后可以在触发器函数中使用它来访问它current_setting.基本上,我正在尝试从之前发布非常相似的票证中选择n2 ,区别在于我正在使用PG 10.1.

我一直在尝试3种设置变量的方法:

  • SET local myvars.user_id = 4,从而在交易中在本地设置;
  • SET myvars.user_id = 4从而将其设置在会话中;
  • SELECT set_config('myvars.user_id', '4', false),取决于最后一个参数,将是前两个选项的快捷方式.

它们都不能在触发器中使用,触发器NULL在获取变量时接收current_setting.这是我设计的用于对其进行故障排除的脚本(可以很容易地与postgres docker镜像一起使用):

database=$POSTGRES_DB
user=$POSTGRES_USER
[ -z "$user" ] && user="postgres"

psql -v ON_ERROR_STOP=1 --username "$user" $database <<-EOSQL
    DROP TRIGGER IF EXISTS add_transition1 ON houses;
    CREATE TABLE IF NOT EXISTS houses (
        id SERIAL NOT NULL,
        name VARCHAR(80),
        created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now(),
        PRIMARY KEY(id)
    );

    CREATE …
Run Code Online (Sandbox Code Playgroud)

postgresql global-variables plpgsql postgresql-triggers

12
推荐指数
3
解决办法
1905
查看次数

如何从Qt应用程序检查当前PostgreSQL用户的角色?

我有一些基于Qt库和使用QPSQL驱动程序的应用程序.
在PostreSQL中定义了一些用户角色(例如:admin,operator,user).我的应用程序在指定用户下创建与postgres服务器的连接.如何查看用户角色?

postgresql permissions qt database-design

11
推荐指数
2
解决办法
1万
查看次数

如何在rails应用程序中使用PostgreSQL触发器?

我试图在我的rails应用程序中使用PostgreSQL触发器.所以我尝试使用这种迁移,其中触发器的执行很容易:

-- class AddTriggersToProducts < ActiveRecord::Migration
  def self.up
    table :products
    execute %q{
        create trigger trig1 before insert on products for each row
        begin 
        price = price + 5
        end;
        }
  end

  def self.down
    execute 'DROP TRIGGER trig1'
  end
end
Run Code Online (Sandbox Code Playgroud)

但这并没有改变任何事情.如果我要在这里使用一个,我不知道在哪里写程序或功能......

postgresql triggers ruby-on-rails plpgsql

3
推荐指数
1
解决办法
3097
查看次数