Advertisement
emssik

Przerabiamy linkage - 2

Aug 24th, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.88 KB | None | 0 0
  1. START TRANSACTION;
  2. DELETE FROM tbl_diff_fields d WHERE NOT EXISTS (SELECT 1 FROM tbl_linkage l WHERE l.fld_linkage_id = d.fld_linkage_id LIMIT 1);
  3. DELETE FROM tbl_mmedia d WHERE NOT EXISTS (SELECT 1 FROM tbl_linkage l WHERE l.fld_linkage_id = d.fld_linkage_id LIMIT 1);
  4. DELETE FROM tbl_special_fields d WHERE NOT EXISTS (SELECT 1 FROM tbl_linkage l WHERE l.fld_linkage_id = d.fld_linkage_id LIMIT 1);
  5. commit;
  6.  
  7. START TRANSACTION;
  8. CREATE TEMP SEQUENCE serial START 1;
  9. ALTER TABLE tbl_linkage ADD COLUMN fld_linkage_int BIGINT;
  10. UPDATE tbl_linkage SET fld_linkage_int = NEXTVAL('serial');
  11.  
  12. UPDATE tbl_diff_fields x SET fld_linkage_id = (SELECT CAST(fld_linkage_int AS text) FROM tbl_linkage y WHERE y.fld_linkage_id = x.fld_linkage_id LIMIT 1);
  13. UPDATE tbl_mmedia x SET fld_linkage_id = (SELECT CAST(fld_linkage_int AS text)  FROM tbl_linkage y WHERE y.fld_linkage_id = x.fld_linkage_id LIMIT 1);
  14. UPDATE tbl_special_fields x SET fld_linkage_id = (SELECT CAST(fld_linkage_int AS text)  FROM tbl_linkage y WHERE y.fld_linkage_id = x.fld_linkage_id LIMIT 1);
  15.  
  16. ALTER TABLE tbl_linkage DROP CONSTRAINT tbl_linkage_pkey;
  17. ALTER TABLE tbl_linkage DROP COLUMN fld_linkage_id;
  18. ALTER TABLE tbl_linkage RENAME COLUMN fld_linkage_int TO fld_linkage_id;
  19. ALTER TABLE tbl_linkage ADD PRIMARY KEY (fld_linkage_id);
  20.  
  21. ALTER TABLE tbl_diff_fields  DROP CONSTRAINT tbl_diff_fields_pkey;
  22. DROP INDEX idx_tbl_special_fields_fld_linkage_id;
  23.  
  24. ALTER TABLE tbl_diff_fields ALTER COLUMN fld_linkage_id TYPE BIGINT USING CAST(fld_linkage_id AS BIGINT);
  25. ALTER TABLE tbl_mmedia ALTER COLUMN fld_linkage_id TYPE BIGINT USING CAST(fld_linkage_id AS BIGINT);
  26. ALTER TABLE tbl_special_fields ALTER COLUMN fld_linkage_id TYPE BIGINT USING CAST(fld_linkage_id AS BIGINT);
  27.  
  28. ALTER TABLE tbl_diff_fields ADD PRIMARY KEY (fld_linkage_id, fld_level);
  29. CREATE INDEX idx_tbl_special_fields_fld_linkage_id ON tbl_special_fields (fld_linkage_id);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement