84 lines
1.8 KiB
MySQL
84 lines
1.8 KiB
MySQL
-- Create sequences for primary key generation
|
|
CREATE SEQUENCE seq_products START WITH 1 INCREMENT BY 1;
|
|
CREATE SEQUENCE seq_orders START WITH 1 INCREMENT BY 1;
|
|
CREATE SEQUENCE seq_users START WITH 1 INCREMENT BY 1;
|
|
CREATE SEQUENCE seq_transactions START WITH 1 INCREMENT BY 1;
|
|
CREATE SEQUENCE seq_tasks START WITH 1 INCREMENT BY 1;
|
|
|
|
-- Create tables with meaningful names and relevant columns
|
|
CREATE TABLE products (
|
|
id NUMBER PRIMARY KEY,
|
|
name VARCHAR2(100),
|
|
category VARCHAR2(20),
|
|
quantity INTEGER
|
|
);
|
|
|
|
CREATE TABLE orders (
|
|
id NUMBER PRIMARY KEY,
|
|
description VARCHAR2(255),
|
|
status VARCHAR2(20)
|
|
);
|
|
|
|
CREATE TABLE users (
|
|
id NUMBER PRIMARY KEY,
|
|
created_at DATE DEFAULT SYSDATE,
|
|
username VARCHAR2(20),
|
|
age INTEGER,
|
|
location VARCHAR2(20)
|
|
);
|
|
|
|
CREATE TABLE transactions (
|
|
id NUMBER PRIMARY KEY,
|
|
amount NUMBER(10,2),
|
|
currency VARCHAR2(20)
|
|
);
|
|
|
|
CREATE TABLE tasks (
|
|
id NUMBER PRIMARY KEY,
|
|
status VARCHAR2(50),
|
|
priority INTEGER,
|
|
type VARCHAR2(20),
|
|
assigned_to VARCHAR2(20)
|
|
);
|
|
|
|
-- Create triggers to auto-generate primary key values using sequences
|
|
CREATE OR REPLACE TRIGGER trg_products_pk
|
|
BEFORE INSERT ON products
|
|
FOR EACH ROW
|
|
BEGIN
|
|
SELECT seq_products.NEXTVAL INTO :NEW.id FROM dual;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE TRIGGER trg_orders_pk
|
|
BEFORE INSERT ON orders
|
|
FOR EACH ROW
|
|
BEGIN
|
|
SELECT seq_orders.NEXTVAL INTO :NEW.id FROM dual;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE TRIGGER trg_users_pk
|
|
BEFORE INSERT ON users
|
|
FOR EACH ROW
|
|
BEGIN
|
|
SELECT seq_users.NEXTVAL INTO :NEW.id FROM dual;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE TRIGGER trg_transactions_pk
|
|
BEFORE INSERT ON transactions
|
|
FOR EACH ROW
|
|
BEGIN
|
|
SELECT seq_transactions.NEXTVAL INTO :NEW.id FROM dual;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE TRIGGER trg_tasks_pk
|
|
BEFORE INSERT ON tasks
|
|
FOR EACH ROW
|
|
BEGIN
|
|
SELECT seq_tasks.NEXTVAL INTO :NEW.id FROM dual;
|
|
END;
|
|
/
|