avejidah

show_area_manager decomp

Dec 9th, 2011
467
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.39 KB | None | 0 0
  1. --ALTER TABLE show_areas ADD managerID INT
  2.  
  3. BEGIN TRANSACTION bdb_20111209
  4.  
  5. ------------------------------------------------------------------------------
  6.  -- NULL all blank emails, names, and phone numbers.
  7. ------------------------------------------------------------------------------
  8. UPDATE show_areas SET
  9. ownerName = NULL
  10. WHERE ownerName = ''
  11.  
  12. UPDATE show_areas SET
  13. ownerEmail = NULL
  14. WHERE ownerEmail = ''
  15.  
  16. UPDATE show_areas SET
  17. ownerPhone = NULL
  18. WHERE ownerPhone = ''
  19.  
  20. ------------------------------------------------------------------------------
  21.  -- TRIM all emails, names, and phone numbers.
  22. ------------------------------------------------------------------------------
  23. UPDATE show_areas SET
  24. ownerName  = RTRIM(LTRIM(ownerName)),
  25. ownerEmail = RTRIM(LTRIM(ownerEmail)),
  26. ownerPhone = RTRIM(LTRIM(ownerPhone))
  27.  
  28. ------------------------------------------------------------------------------
  29.  -- Create the new am table.
  30. ------------------------------------------------------------------------------
  31. CREATE TABLE show_area_managers
  32. (
  33.   amID INT NOT NULL PRIMARY KEY IDENTITY,
  34.   amName VARCHAR(255),
  35.   amEmail VARCHAR(255),
  36.   amPhone VARCHAR(100)
  37. )
  38.  
  39. ------------------------------------------------------------------------------
  40.  -- Populate the table.
  41. ------------------------------------------------------------------------------
  42. INSERT INTO show_area_managers (amName, amEmail, amPhone)
  43. SELECT DISTINCT ownerName, ownerEmail, ownerPhone
  44. FROM   show_areas
  45. WHERE  ownerName  IS NOT NULL
  46.   OR   ownerEmail IS NOT NULL
  47.   OR   ownerPhone IS NOT NULL
  48. ORDER BY ownerName
  49.  
  50. ------------------------------------------------------------------------------
  51.  -- Add the references for to the managers.
  52. ------------------------------------------------------------------------------
  53. DECLARE @amID INT
  54. DECLARE @amName VARCHAR(255)
  55. DECLARE @amEmail VARCHAR(255)
  56. DECLARE @amPhone VARCHAR(100)
  57.  
  58. DECLARE samCursor CURSOR FOR
  59. SELECT  amID, amName, amEmail, amPhone
  60. FROM    show_area_managers
  61. OPEN samCursor
  62. FETCH NEXT FROM samCursor INTO @amID, @amName, @amEmail, @amPhone
  63.  
  64. WHILE @@FETCH_STATUS = 0
  65. BEGIN
  66.   FETCH NEXT FROM samCursor INTO @amID, @amName, @amEmail, @amPhone
  67.   UPDATE show_areas SET
  68.   managerID = @amID
  69.   WHERE ownerName  = @amName
  70.     AND ownerPhone = @amPhone
  71.     AND ownerEmail = @amEmail
  72. END
  73.  
  74. CLOSE samCursor
  75. DEALLOCATE samCursor
  76.  
  77. ------------------------------------------------------------------------------
  78.  -- Make the managerID reference the amID.
  79. ------------------------------------------------------------------------------
  80. ALTER TABLE show_areas ADD FOREIGN KEY (managerID) REFERENCES show_area_managers(amID)
  81.  
  82. ------------------------------------------------------------------------------
  83.  -- Ensure the decomposition is lossless.
  84. ------------------------------------------------------------------------------
  85. SELECT sa.showAreaID, sa.areaName, ownerName, ownerEmail, ownerPhone,
  86.        amName, amEmail, amPhone
  87. FROM   show_areas sa
  88. LEFT OUTER JOIN show_area_managers sam ON sa.managerID = sam.amID
  89.  
  90. ------------------------------------------------------------------------------
  91.  -- Remove the unused columns.
  92. ------------------------------------------------------------------------------
  93. ALTER TABLE show_areas DROP COLUMN ownerName
  94. ALTER TABLE show_areas DROP COLUMN ownerEmail
  95. ALTER TABLE show_areas DROP COLUMN ownerPhone
  96.  
  97. ROLLBACK TRANSACTION bdb_20111209
  98.  
  99.  
Advertisement
Add Comment
Please, Sign In to add comment