19 lines
683 B
SQL
19 lines
683 B
SQL
CREATE TABLE wallets
|
|
(
|
|
user_id BIGINT PRIMARY KEY,
|
|
balance DECIMAL(12, 2) NOT NULL DEFAULT 0.00, -- 可用余额
|
|
frozen_balance DECIMAL(12, 2) NOT NULL DEFAULT 0.00, -- 冻结余额
|
|
version INT NOT NULL DEFAULT 1, -- 必须使用乐观锁
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
|
|
CONSTRAINT chk_balance_non_negative CHECK (balance >= 0),
|
|
CONSTRAINT chk_frozen_non_negative CHECK (frozen_balance >= 0)
|
|
);
|
|
|
|
CREATE INDEX idx_wallets_updated ON wallets (updated_at DESC);
|
|
|
|
CREATE TRIGGER trigger_wallets_updated_at
|
|
BEFORE UPDATE
|
|
ON wallets
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_updated_at_column(); |