我对postgresql中的事务有点陌生。我读了很多教程,但我想做的是.例如,如果我有许多疑问:
INSERT INTO a (id) VALUES (1)
INSERT INTO a (id) VALUES (2)
INSERT INTO a (id) VALUES (3)
INSERT INTO a (id) VALUES (4)
....
如果由于某些问题,它在第3次或第9次查询中失败了,我想要的是自动回滚所有以前的查询。
我的问题是,在postgresql中有什么方法可以做到吗?
我有一个关于postgresql嵌套函数和事务的问题。如您所知,postgresql中的每个函数都在一个事务中。我很好奇,如果内部功能失败了,外部函数中的所有更改是否都会回滚?
以下是一个例子
function 1(){
insert some data into table 1;
call function2
insert some data into table 2;
}
如果function2中有错误,“表1中的插入”会回滚吗?
有什么建议吗?
我运行以下命令将数据库部署到heroku
heroku run rails db:migrate
但我有个错误
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::UndefinedObject: ERROR: type "dateti" does not exist
LINE 1: ALTER TABLE "users" ADD "activated_at" dateti
我不小心更新了表中1列的71行。这是产品,我想学习如何恢复这些更改。这是一个PostgreSQL环境。
就在更新之后,我意识到哪里缺少条件。我回滚它,但是:
db=# ROLLBACK;
WARNING: there is no transaction in progress
ROLLBACK
不确定它怎么不会被回滚。我没有备份文件。否则,我会在本地复制文件并存储在数据库中。那么,有没有人能建议我如何恢复这些更改呢?
有没有办法让PostgreSQL存储日志,并且可以用来恢复我的数据?
我是PostgreSQL的新手。我想要模拟此计划的死锁:
如何在PostgreSQL中模拟死锁?这是完全可能的吗?如何锁定特定列?
BEGIN;
UPDATE deadlock_demonstration
SET salary1=(SELECT salary1
FROM deadlock_demonstration
WHERE worker_id = 1
FOR UPDATE)+100
WHERE worker_id=1;
SELECT pg_sleep(5);
commit;
SELECT salary2 FROM deadlock_demonstration WHERE work
我得到了以下异常:
2015-06-23 12:34:30.015 ERROR findRequest:224 - get failed
org.hibernate.TransactionException: nested transactions not supported
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:154)
at org.hibernate.internal.SessionImpl.beginTransaction(S
假设在PostgreSQL中有表,如下所示:
CREATE TABLE A
(
userid integer,
productid integer,
description citext,
price numeric
)
还有一些触发因素:
CREATE TRIGGER afterinsert
AFTER INSERT
ON A
FOR EACH ROW
EXECUTE PROCEDURE DoSomething1();
CREATE TRIGGER beforeinsert
BEFORE INSERT
ON A
FOR EACH ROW
EX
PostgreSQL 9
我有一个有超过500 K行的表,我想更新一些“时间戳没有时区”字段。
UPDATE order_update
SET last_attempt_ts = (last_attempt_ts AT TIME ZONE 'EST') AT TIME ZONE 'UTC';
但是这个sql很慢,有更好更快的方法吗?
我打算创建几个数据库,并将权限授予相应的用户。例如,
CREATE DATABASE DB1;
GRANT .. ON .. TO DB1;
CREATE DATABASE DB2;
GRANT .. ON .. TO DB2;
CREATE DATABASE DB3;
GRANT .. ON .. TO DB3;
但是我想这样做,如果这条语句中的任何一条语句失败,前面的所有语句,如"CREATE DATABASE“或"GRANT ...”应该像事务语句的回滚一样取消
这个是可能的吗?
我正在尝试将Server事务从教科书转换为PostgreSQL。原始事务是
BEGIN TRANSACTION
INSERT INTO Customers(cust_id,cust_name) VALUES('1000000010','Toys Emporium');
SAVE TRANSACTION StartOrder;
INSERT INTO Orders(order_num,order_date,cust_id) VALUES(20100,'1999/12/1','1000000010');
IF @@ERROR <
我的PostgreSQL 10.5数据库中有以下语句,在repeatable read事务中执行:
delete from task
where task.task_id = (
select task.task_id
from task
order by task.created_at asc
limit 1
for update skip locked
)
returning
task.task_id,
task.created_at
不幸的是,当我运行它时,我有时会得到:
[67] ERROR: could not s