-- ===================================================== -- SCRIPT 02: Extend Machines Table for PC Data -- ===================================================== -- Date: 2025-11-06 -- Purpose: Add PC-related columns to machines table -- Status: REVERSIBLE (see ROLLBACK_02) -- Estimated Time: 2-3 minutes -- NOTE: Warranty data goes to separate warranties table (script 04) -- ===================================================== USE shopdb; SET SQL_SAFE_UPDATES = 0; -- ===================================================== -- STEP 1: Add PC-specific fields -- ===================================================== -- Check current structure SELECT 'Current machines table structure:' AS info; SHOW COLUMNS FROM machines; -- Add PC-specific fields ALTER TABLE machines ADD COLUMN hostname VARCHAR(100) AFTER machinenumber, ADD COLUMN loggedinuser VARCHAR(100) AFTER hostname, ADD COLUMN serialnumber VARCHAR(100) AFTER modelnumberid; -- Add OS and status fields ALTER TABLE machines ADD COLUMN osid INT(11) AFTER serialnumber, ADD COLUMN machinestatusid INT(11) AFTER osid, ADD COLUMN pctypeid INT(11) AFTER machinetypeid; -- Add controller fields (for CNCs) ALTER TABLE machines ADD COLUMN controllertypeid INT(11) AFTER modelnumberid, ADD COLUMN controllerosid INT(11) AFTER controllertypeid; -- ===================================================== -- STEP 2: Add configuration flags -- ===================================================== ALTER TABLE machines ADD COLUMN requires_manual_machine_config TINYINT(1) DEFAULT 0 AFTER islocationonly; -- ===================================================== -- STEP 3: Add audit fields -- ===================================================== ALTER TABLE machines ADD COLUMN lastupdated DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER requires_manual_machine_config, ADD COLUMN dateadded DATETIME DEFAULT CURRENT_TIMESTAMP AFTER lastupdated; -- ===================================================== -- STEP 4: Create indexes -- ===================================================== CREATE INDEX idx_machines_hostname ON machines(hostname); CREATE INDEX idx_machines_serialnumber ON machines(serialnumber); CREATE INDEX idx_machines_pctypeid ON machines(pctypeid); CREATE INDEX idx_machines_osid ON machines(osid); CREATE INDEX idx_machines_machinestatusid ON machines(machinestatusid); CREATE INDEX idx_machines_lastupdated ON machines(lastupdated); CREATE INDEX idx_machines_controllertypeid ON machines(controllertypeid); CREATE INDEX idx_machines_controllerosid ON machines(controllerosid); -- ===================================================== -- STEP 5: Add foreign keys (will be created after related tables exist) -- ===================================================== -- NOTE: FK constraints will be added after: -- - Script 03 creates PC machine types -- - Script 07 renames pcstatus to machinestatus -- These will be added in a later script to avoid errors -- ===================================================== -- VERIFICATION -- ===================================================== SELECT '✓ Machines table extended with PC fields' AS status; DESCRIBE machines; SELECT 'New column count:' AS info, COUNT(*) AS column_count FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'shopdb' AND TABLE_NAME = 'machines'; SELECT '✓ Script 02 completed successfully' AS status; SET SQL_SAFE_UPDATES = 1; -- ===================================================== -- NOTES -- ===================================================== -- Next: Run script 03_create_pc_machine_types.sql -- Rollback: Run ROLLBACK_02_machines_table_extensions.sql -- =====================================================