I worked on a simple wallet system like GPay / PhonePe / Paytm.
Users can:
Store money
Send money
View transaction history
even a small mistake can cause:
Money loss
Duplicate transactions
Wrong balances
created a simple accounts table:
CREATE TABLE accounts (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
balance INT NOT NULL CHECK (balance >= 0),
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Added some dummy data:
INSERT INTO accounts (name, balance)
VALUES
('Alice', 1000),
('Bob', 500);
Now I tried some invalid operations to see what happens.
Case 1: Sending more money than available
UPDATE accounts
SET balance = balance - 2000
WHERE name = 'Alice';
Alice has only 1000
Result: Query fails
Reason:
CHECK (balance >= 0) does not allow negative balance
Case 2: Directly setting negative balance
UPDATE accounts
SET balance = -100
WHERE name = 'Bob';
The database is enforcing rules (constraints).
This rule:
CHECK (balance >= 0)
ensures:
Balance is always valid No negative values This is handled automatically by the database
Top comments (0)