我想在会话/事务中记录用户的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) 我有一些基于Qt库和使用QPSQL驱动程序的应用程序.
在PostreSQL中定义了一些用户角色(例如:admin,operator,user).我的应用程序在指定用户下创建与postgres服务器的连接.如何查看用户角色?
我试图在我的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)
但这并没有改变任何事情.如果我要在这里使用一个,我不知道在哪里写程序或功能......