CREATE TABLE IF NOT EXISTS `vn`.`sim` (
	`code` VARCHAR(25) COMMENT 'No se ha puesto BIGINT por incompatibilidad con Access',
	`line` VARCHAR(15) NOT NULL CHECK (`line` REGEXP '^[0-9]+$'),
	`ext` INT(4) NOT NULL,
	`pin` INT(4) NOT NULL CHECK (`pin` REGEXP '^[0-9]+$'),
	`puk` INT(15) NOT NULL,
	PRIMARY KEY (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

ALTER TABLE vn.deviceProductionUser CHANGE simSerialNumber simFk VARCHAR(25) DEFAULT NULL NULL;
ALTER TABLE vn.deviceProductionUser	MODIFY COLUMN simFk VARCHAR(25) DEFAULT NULL NULL;

INSERT IGNORE INTO `vn`.`sim` (`line`, `ext`, `pin`, `code`, `puk`) VALUES 
	('621188151', 2209, 1486, '3456985220092508',14213470),
	('621188152', 2210, 8765, '3456985220092509',99473093),
	('621188153', 2211, 3064, '3456985220092510',52967210),
	('621188759', 2081, 3700, '3456985220123637',56600999),
	('621188760', 2082, 3259, '345698522023638',87492404),
	('621188761', 2083, 2790, '3456985220123639',94009456),
	('621188762', 2084, 2480, '3456985220123644',1484999),
	('621188763', 2085, 6876, '3456985220123641',36577064),
	('621188766', 2086, 7775, '3456985220123642',80761698),
	('621188769', 2088, 4027, '3456985220123643',37921712),
	('621188771', 2089, 8797, '3456985220123640',63092540),
	('621188772', 2090, 8404, '3456985220123645',21014997),
	('621188773', 2091, 5481, '3456985220123646',16317277),
	('621188774', 2092, 9632, '3456985220123647',22235994),
	('621188775', 2093, 4654, '3456985220123648',28506486),
	('621188838', 2094, 1392, '3456985220123649',29498627),
	('621188839', 2095, 7774, '3456985220123650',46263490),
	('621188840', 2096, 7304, '3456985220123658',8212044),
	('621188841', 2097, 5569, '3456985220123652',81597658),
	('621188842', 2098, 4944, '3456985220123653',24961501),
	('621188843', 2099, 5142, '3456985220123654',17035634),
	('621188844', 2111, 7245, '3456985220123655',90231951),
	('621188846', 2110, 6590, '3456985220123656',72201537),
	('667680207', 2564, 4042, '34569832200759166',48401979),
	('667680315', 2565, 7143, '34569832200759372',32143252),
	('667680318', 2566, 6342, '34569832200759364',39597112),
	('667680413', 2567, 5580, '34569832200759356',32786992),
	('667680463', 2568, 0171, '34569832200759349',34240853),
	('667688217', 2569, 2500, '34569832200759331',5687589),
	('633603945', 2212, 7129, '34569832200759323',51554019),
	('622130186', 2213, 4826, '34569832200759307',19623551),
	('633973424', 2214, 8535, '34569832200759299',94619307),
	('633703828', 2215, 8628, '34569832200759281',22468012),
	('622025110', 2216, 2399, '34569832200759273',34602918),
	('622924867', 2217, 5665, '34569832200759265',26920216),
	('722409630', 2218, 5211, '34569832200759240',93750137),
	('623590529', 2219, 0493, '34569832200759208',47077088),
	('633243462', 2220, 6902, '34569832200759174',6421962),
	('633047286', 2221, 5592, '34569832200759182',32069439),
	('744716801', 2112, 9184, '34569832200759190',57049814),
	('655995021', 2131, 8896, '34569852202049093',19497356),
	('685522718', 2132, 1955, '34569852202049101',28519879),
	('674587213', 2994, 2006, '34569332200223743',62360135),
	('674587227', 2993, 9271, '34569332200223750',81628192),
	('674587229', 2993, 0900, '34569332200223768',91119071),
	('674587231', 2992, 5007, '34569332200223776',45826232),
	('674587234', 2991, 1378, '34569332200223784',91245744),
	('674587240', 2990, 0905, '34569332200223792',13083224),
	('674587245', 2989, 9059, '34569332200223800',15291807),
	('674587250', 2988, 8188, '34569332200223818',83017918),
	('674587254', 2987, 2962, '34569332200223826',92809271),
	('674587256', 2986, 0358, '34569332200223834',81067040),
	('674592713', 2570, 2537, '34569332200230672',82325850),
	('697832478', 2579, 0936, '34568732200494825',49658372),
	('697832176', 2571, 5944, '34568732200494742',19039461),
	('697832477', 2572, 5138, '34568732200494759',25712504),
	('697832178', 2573, 4597, '34568732200494767',66241760),
	('697832182', 2574, 9241, '34568732200494775',07342562),
	('697832196', 2575, 2995, '34568732200494783',53929026),
	('697832214', 2576, 7434, '34568732200494791',49698432),
	('697832230', 2577, 7004, '34568732200494809',21578612),
	('697832235', 2578, 9674, '34568732200494817',93090700),
	('673420375', 2599, 5430, '34562052300117259',35911412),
	('673420367', 2598, 8402, '34562052300117242',924654),
	('673420361', 2597, 5125, '34562052300117234',12027970),
	('673420355', 2596, 5069, '34562052300117226',34978149),
	('673420348', 2595, 8911, '34562052300117218',4228121),
	('673420346', 2594, 2461, '34562052300117200',67670772),
	('673420345', 2593, 2226, '34562052300117192',90586404),
	('673420306', 2592, 3355, '34562052300117184',97850017),
	('673420257', 2591, 9395, '34562052300117176',50713786),
	('673420231', 2590, 1378, '34562052300117168',50151763),
	('673420223', 2589, 9580, '34562052300117150',99534550),
	('673420216', 2588, 4955, '34562052300117143',317554),
	('673420203', 2587, 6742, '34562052300117135',69321531),
	('673420201', 2586, 1659, '34562052300117127',54720480),
	('673420199', 2585, 7823, '34562052300117119',22923796),
	('673420198', 2584, 1787, '34562052300117101',54414630),
	('673420168', 2583, 6334, '34562052300117093',50694894),
	('673420147', 2582, 8951, '34562052300117085',1402535),
	('673420125', 2581, 3068, '34562052300117077',86216200),
	('673420124', 2580, 9517, '34562052300117069',42504099),
	('600294609', 2715, 7474, '34569832304894588',55923317),
	('600084713', 2703, 8342, '34569832304894570',8392636),
	('600084732', 2704, 1625, '34569832304894513',75477452),
	('600084850', 2705, 9896, '34569832304894653',28589813),
	('600084951', 2706, 5520, '34569832304894661',75353012),
	('600084978', 2707, 2698, '34569832304894679',9005523),
	('600085403', 2708, 0837, '34569832304894646',77051152),
	('600085513', 2709, 3106, '34569832304894687',41571002),
	('600293916', 2712, 8990, '34569832304894620',95188676),
	('600294160', 2714, 6376, '34569832304894703',79879896),
	('671919529', 2975, 9184, '34569832304806236',7535392),
	('671919942', 2981, 0328, '34569832304806269',31052894),
	('671919530', 2976, 0344, '34569832304806251',89860304),
	('671919533', 2977, 0668, '34569832304806244',42921771),
	('671919535', 2978, 0105, '34569832304806277',31009417),
	('671919537', 2979, 0881, '34569832304806285',33479769),
	('671919540', 2980, 9874, '34569832304806293',14103929),
	('671919525', 2972, 2089, '34569832304806301',45903729),
	('671919527', 2973, 8206, '34569832304806368',1586035),
	('671919528', 2974, 2532, '34569832304806327',62310124),
	('673668717', 2836, 7973, '34562032301044223',15635496),
	('673668734', 2837, 4457, '34562032301044231',18313118),
	('673668738', 2824, 2911, '34562032301044249',30875583),
	('673668745', 2838, 7253, '34562032301044256',62754222),
	('673668796', 2839, 0068, '34562032301044264',15556829),
	('673668803', 2840, 2386, '34562032301044272',17572287),
	('673669591', 2850, 3833, '34562032301044280',34828896),
	('673668808', 2841, 3584, '34562032301044298',16234497),
	('673670102', 2851, 3554, '34562032301044306',23652625),
	('673670131', 2852, 4412, '34562032301044314',88611709),
	('673670135', 2827, 6058, '34562032301044322',53918579),
	('673670201', 2828, 8066, '34562032301044330',92369343),
	('673670225', 2829, 4592, '34562032301044348',24126635),
	('673670236', 2830, 2974, '34562032301044355',88608465),
	('673671485', 2849, 0349, '34562032301044363',44944874),
	('673461977', 2871, 1728, '34562032400157090',46975780),
	('673461975', 2870, 4734, '34562032400157082',69628432),
	('673461972', 2867, 6276, '34562032400157058',53338365),
	('673461979', 2872, 6043, '34562032400157108',36525197),
	('673461958', 2859, 3164, '34562032400156977',58947831),
	('673461957', 2857, 8685, '34562032400156969',15826386),
	('673461944', 2853, 1073, '34562032400156910',20452195),
	('673461974', 2869, 7121, '34562032400157074',32044645),
	('673461973', 2868, 8022, '34562032400157066',29282044),
	('673461971', 2866, 3089, '34562032400157041',66149978),
	('673461969', 2865, 7555, '34562032400157033',78391293),
	('673461960', 2860, 5203, '34562032400156985',37138232),
	('673461952', 2855, 6915, '34562032400156936',62724661),
	('673461949', 2854, 8706, '34562032400156928',5594345),
	('673461966', 2863, 2496, '34562032400157017',93450666),
	('673461968', 2864, 3703, '34562032400157025',23208841),
	('673461963', 2862, 9364, '34562032400157009',29712130),
	('673462719', 2873, 9387, '34562032400156951',50434348),
	('673461962', 2861, 8441, '34562032400156993',39686909),
	('673461956', 2826, 5392, '34562032400156944',5496107),
	('673465284', 2694, 1523, '34562032400171349',14554994),
	('673465282', 2692, 4645, '34562032400171323',24871187),
	('673465283', 2693, 5253, '34562032400171331',28303238),
	('673465841', 2696, 0849, '34562032400171257',21673222),
	('673465258', 2679, 4140, '34562032400171174',39793881),
	('673465263', 2680, 6922, '34562032400171182',12253261),
	('673465265', 2681, 9112, '34562032400171190',93894366),
	('673465267', 2682, 3259, '34562032400171208',2342189),
	('673465268', 2683, 8540, '34562032400171216',63886925),
	('673465285', 2695, 4167, '34562032400171356',79227618),
	('673465270', 2684, 4292, '34562032400171224',19216349),
	('673465272', 2685, 4007, '34562032400171232',14396903),
	('673465273', 2686, 6894, '34562032400171240',13569394),
	('673465274', 2687, 5268, '34562032400171265',59453667),
	('673465275', 2688, 0232, '34562032400171273',62324713),
	('673465276', 2689, 2720, '34562032400171281',65977200),
	('673465843', 2698, 4773, '34562032400171364',78387158),
	('673465842', 2697, 3729, '34562032400171315',94201789),
	('673465280', 2691, 0503, '34562032400171307',12298533),
	('673465279', 2690, 8239, '34562032400171299',76183877);

UPDATE vn.deviceProductionUser
	SET simFk = NULL
	WHERE id IN (
		SELECT dpu.id
			FROM vn.deviceProductionUser dpu
				LEFT JOIN vn.sim s ON s.code = dpu.simFk
			WHERE s.code IS NULL
				AND dpu.simFk IS NOT NULL
	);

ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_sim_FK 
	FOREIGN KEY (simFk) REFERENCES vn.sim(code) ON DELETE RESTRICT ON UPDATE CASCADE;

GRANT SELECT, INSERT, DELETE, UPDATE ON TABLE vn.sim TO hr;
