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;