PostgreSQL – 事务
交易不是我们听到的新词。我们多次听到这个词,比如“现金交易”。银行通常处理现金,即发送或接收现金,因此我们将这个术语称为现金交易。所以简单的事务是一个工作单元。在本文中,我们将学习 PostgreSQL 数据库语言中的事务。
事务在任何数据库语言中都很重要,每当我们想要添加、删除和更新时,事务都用于保持数据的完整性和其他几个原因。即使没有事务,我们也可以添加、删除和更新数据库,但由于数据完整性丢失,数据被纠正的可能性非常大。
事务的属性
现在让我们看看事务的 ACID 属性:
- 原子性——该属性确保所有事务都是完整的。它遵循 all or none 属性,即事务不应部分完成。
- 一致性——此属性确保所有事务都是一致的,即在提交事务后,这些更改是否在数据库中正确更新。
- 隔离——当两个事务运行时,两个事务都有自己的隐私,即一个事务不会干扰另一个事务。
- 持久性——此属性确保即使在系统发生故障时,数据库中提交的数据也是安全的,即永久的。
事务中的命令
事务块中有三个主要命令。他们是:
- 开始
- 犯罪
- 回滚
一般语法:
BEGIN;
// set of statements
[COMMIT | ROLLBACK];
现在我们将了解每个事务控制命令的重要性,为此,我们必须先在数据库中建立一个表。
CREATE TABLE BankStatements (
customer_id serial PRIMARY KEY,
full_name VARCHAR NOT NULL,
balance INT
);
由于数据库模式现在已经准备好,我们将在其中插入一些值。
INSERT INTO BankStatements (
customer_id ,
full_name,
balance
)
VALUES
(1, 'Sekhar rao', 1000),
(2, 'Abishek Yadav', 500),
(3, 'Srinivas Goud', 1000);
1. 开始
BEGIN命令用于启动事务。要启动一个事务,我们应该首先给出 BEGIN 命令,如果我们不这样给出它,那么数据库就无法识别该事务。
示例 1
BEGIN;
INSERT INTO BankStatements (
customer_id,
full_name,
balance
)
VALUES(
4, 'Priya chetri', 500
)
;
COMMIT;
输出
2. 提交
每当我们显示所需的数据时, COMMIT命令用于保存更改并将它们反映在数据库中。假设我们更新了数据库中的数据但我们没有提交 COMMIT 那么这些更改不会反映在数据库中。要保存在事务中所做的更改,我们应该确定地提交该事务。
示例 2
BEGIN;
UPDATE BankStatements
SET balance = balance - 500
WHERE
customer_id = 1;
SELECT customer_id, full_name, balance
FROM BankStatements;
UPDATE BankStatements
SET balance = balance + 500
WHERE
customer_id = 2;
COMMIT;
SELECT customer_id, full_name, balance
FROM BankStatements;
输出:
3. 回滚
ROLLBACK命令用于撤消事务中所做的更改。正如我们所知,数据库语言中的事务用于大型计算,例如在银行中。假设银行员工错误地增加了错误人的余额记录,那么他可以简单地回滚并回到之前的状态。
示例 3
BEGIN;
DELETE FROM BankStatements
WHERE
customer_id = 1;
SELECT customer_id, full_name, balance
FROM BankStatements;
ROLLBACK;
SELECT customer_id, full_name, balance
FROM BankStatements;
输出: