45 lines
1.4 KiB
SQL
45 lines
1.4 KiB
SQL
-- Create customers table if it doesn't exist
|
|
CREATE TABLE IF NOT EXISTS customers (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
phone VARCHAR(20) UNIQUE,
|
|
email VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Add customer_id to orders table
|
|
SET @dbname = DATABASE();
|
|
SET @tablename = "orders";
|
|
SET @columnname = "customer_id";
|
|
SET @preparedStatement = (SELECT IF(
|
|
(
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE
|
|
(table_name = @tablename)
|
|
AND (table_schema = @dbname)
|
|
AND (column_name = @columnname)
|
|
) > 0,
|
|
"SELECT 1",
|
|
"ALTER TABLE orders ADD COLUMN customer_id INT DEFAULT NULL AFTER order_type;"
|
|
));
|
|
PREPARE alterIfNotExists FROM @preparedStatement;
|
|
EXECUTE alterIfNotExists;
|
|
DEALLOCATE PREPARE alterIfNotExists;
|
|
|
|
-- Add foreign key if it doesn't exist
|
|
SET @constraintname = "fk_orders_customer";
|
|
SET @preparedStatement = (SELECT IF(
|
|
(
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
|
|
WHERE
|
|
(table_name = @tablename)
|
|
AND (table_schema = @dbname)
|
|
AND (constraint_name = @constraintname)
|
|
) > 0,
|
|
"SELECT 1",
|
|
"ALTER TABLE orders ADD CONSTRAINT fk_orders_customer FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE SET NULL;"
|
|
));
|
|
PREPARE addConstraint FROM @preparedStatement;
|
|
EXECUTE addConstraint;
|
|
DEALLOCATE PREPARE addConstraint;
|