CREATE TABLE users ( user_id SERIAL PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL ); CREATE TABLE products ( product_id SERIAL PRIMARY KEY, product_name VARCHAR(100) NOT NULL, price NUMERIC(10, 2) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX idx_username ON users (username); BEGIN; UPDATE users SET email = 'new_email@example.com' WHERE user_id = 1; INSERT INTO logs (user_id, action, action_date) VALUES (1, 'UPDATE_EMAIL', CURRENT_TIMESTAMP); COMMIT; CREATE FUNCTION get_user_count() RETURNS INTEGER AS $$ DECLARE user_count INTEGER; BEGIN SELECT COUNT(*) INTO user_count FROM users; RETURN user_count; END; $$ LANGUAGE plpgsql; BEGIN; UPDATE users SET email = 'new_email@example.com' WHERE user_id = 1; EXCEPTION WHEN others THEN INSERT INTO error_logs (error_message, error_date) VALUES (SQLERRM, CURRENT_TIMESTAMP); ROLLBACK; DECLARE discount DECIMAL := 0.1; total_price DECIMAL; BEGIN SELECT SUM(price) INTO total_price FROM products; IF total_price > 1000 THEN total_price := total_price - (total_price * discount); END IF; ... END;


上一篇:
下一篇:
切换中文