WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

PostgreSQL · Intermediate · question 21 of 100

What is the ACID property in databases, and how does PostgreSQL ensure ACID compliance?

📕 Buy this interview preparation book: 100 PostgreSQL questions & answers — PDF + EPUB for $5

ACID stands for Atomicity, Consistency, Isolation, and Durability. These are the four key properties that a database system must exhibit to ensure transactional reliability and consistency.

Atomicity means that a transaction is treated as a single, all-or-nothing operation, ensuring that the transaction either completely succeeds or completely fails.

Consistency ensures that after a transaction, the database is in a consistent state, meaning that all data integrity constraints are satisfied.

Isolation implies that concurrent transactions do not interfere with each other. This ensures that multiple transactions may occur simultaneously without interfering with each other.

Durability ensures that once a transaction is committed, its effects are permanent in the face of any subsequent failure.

PostgreSQL ensures ACID compliance with its transaction processing system. PostgreSQL ensures atomicity by providing the ROLLBACK command, which can undo all changes made by a transaction.

Consistency is ensured through the use of constraints, such as foreign keys, unique constraints, and check constraints. PostgreSQL includes support for declarative referential integrity (DRI) which is designed to enforce the consistency of the data.

Isolation is achieved through the use of locks, which ensure that concurrent transactions do not interfere with each other. PostgreSQL provides several isolation levels, which allow you to tune the tradeoffs between the desire for consistency in the face of concurrency and performance.

Durability is ensured by writing data to disk, ensuring that the data can be recovered in the event of a system crash or other catastrophic failure.

Here’s an example Java code that demonstrates how PostgreSQL’s transaction processing system ensures atomicity and consistency:

Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost/mydatabase", "username", "password");
connection.setAutoCommit(false); // start transaction

try {
    PreparedStatement statement1 = connection.prepareStatement("INSERT INTO employees (name, salary) VALUES (?, ?)");
    statement1.setString(1, "John Doe");
    statement1.setDouble(2, 50000.00);
    statement1.executeUpdate();

    PreparedStatement statement2 = connection.prepareStatement("INSERT INTO benefits (employee_id, health_insurance) VALUES (?, ?)");
    statement2.setInt(1, 1); // assuming the employee_id is 1
    statement2.setBoolean(2, true);
    statement2.executeUpdate();

    connection.commit(); // commit the transaction
} catch (SQLException ex) {
    connection.rollback(); // rollback the transaction in case an exception occurs
} finally {
    connection.setAutoCommit(true); // set autocommit to true
}

In this example, a transaction is started by setting ‘setAutoCommit‘ to ‘false‘. Two ‘INSERT‘ statements are executed to insert data into two tables. If any exception occurs, the transaction is rolled back using ‘rollback()‘. Otherwise, the transaction is committed using ‘commit()‘. This ensures that the data is either inserted into both tables or neither table, ensuring atomicity. In addition, the consistency of the data is ensured through constraints and foreign keys defined in the schema.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic PostgreSQL interview — then scores it.
📞 Practice PostgreSQL — free 15 min
📕 Buy this interview preparation book: 100 PostgreSQL questions & answers — PDF + EPUB for $5

All 100 PostgreSQL questions · All topics