-- 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;