Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. --a. modify the type of a column;
  2. go
  3. create or alter procedure do1
  4. as
  5. begin
  6. alter table Enchantments
  7. alter column TestColumn int
  8. end
  9. go
  10. --execute do1
  11.  
  12. go
  13. create or alter procedure undo1
  14. as
  15. begin
  16. alter table Enchantments
  17. alter column TestColumn varchar(50)
  18. end
  19. go
  20. --execute undo1
  21.  
  22.  
  23.  
  24. --b. add / remove a column;
  25. go
  26. create or alter procedure do2
  27. as
  28. begin
  29. alter table Players
  30. add TestColumnPlayer int;
  31. end
  32. go
  33. --execute do2
  34.  
  35. go
  36. create or alter procedure undo2
  37. as
  38. begin
  39. alter table Players
  40. drop column TestColumnPlayer;
  41. end
  42. go
  43. --execute undo2
  44.  
  45.  
  46.  
  47. --c. add / remove a DEFAULT constraint;
  48. go
  49. create or alter procedure do3
  50. as
  51. begin
  52. alter table Achievements add TestConstraint int,
  53. constraint DF_Achievement_TestConstraint default 1 for TestConstraint;
  54. end
  55. go
  56. --execute do3 -- wut
  57.  
  58. go
  59. create or alter procedure undo3
  60. as
  61. begin
  62. alter table Achievements drop
  63. constraint DF_Achievement_TestConstraint,
  64. column TestConstraint;
  65. end
  66. go
  67. --execute undo3
  68.  
  69.  
  70.  
  71. --d. add / remove a primary key;
  72. go
  73. create or alter procedure do4
  74. as
  75. begin
  76. create table testTable(Number int not null);
  77. alter table testTable
  78. add constraint PKNumber primary key clustered(Number);
  79. end
  80. go
  81. --execute do4
  82.  
  83. go
  84. create or alter procedure undo4
  85. as
  86. begin
  87. alter table testTable
  88. drop constraint PKNumber
  89. drop table testTable
  90. end
  91. go
  92. --execute undo4
  93.  
  94.  
  95.  
  96. --e. add / remove a candidate key;
  97. go
  98. create or alter procedure do5
  99. as
  100. begin
  101. alter table Items
  102. add constraint UQ_Items_id_name unique(Iid, Name)
  103. end
  104. go
  105. --execute do5 --wut
  106.  
  107. go
  108. create or alter procedure undo5
  109. as
  110. begin
  111. alter table Items
  112. drop constraint UQ_Items_id_name
  113. end
  114. go
  115. --execute undo5
  116.  
  117.  
  118.  
  119. --f. add / remove a foreign key;
  120. go
  121. create or alter procedure do6
  122. as
  123. begin
  124. alter table Structures
  125. add TestFK int;
  126.  
  127. alter table Structures
  128. add constraint Structures_TestFK foreign key(TestFK)
  129. references Players(Pid);
  130. end
  131. go
  132. --execute do6
  133.  
  134. go
  135. create or alter procedure undo6
  136. as
  137. begin
  138. alter table Structures
  139. drop constraint Structures_TestFK;
  140.  
  141. alter table Structures
  142. drop column TestFK;
  143. end
  144. go
  145. --execute undo6
  146.  
  147. --g. create / remove a table.
  148. go
  149. create or alter procedure do7
  150. as
  151. begin
  152. create table TestTableG(
  153. testID int primary key,
  154. testCol varchar(50)
  155. );
  156. end
  157. go
  158. --execute do7
  159.  
  160. go
  161. create or alter procedure undo7
  162. as
  163. begin
  164. drop table if exists TestTableG
  165. end
  166. go
  167. --execute undo7
  168.  
  169.  
  170.  
  171.  
  172. --Create a new table that holds the current version of the database schema.
  173.  
  174. drop table if exists DBVersion
  175. create table DBVersion
  176. (
  177. id int identity (1, 1) not null,
  178. currVersion int,
  179. constraint PK_version_ID primary key clustered(id)
  180. )
  181.  
  182. insert into DBVersion values(0);
  183.  
  184.  
  185.  
  186. --Write another stored procedure that receives as a parameter a version number and brings the database to that version.
  187. go
  188. create or alter procedure TakeMeToVersion
  189. @versionTo int
  190. as
  191. begin
  192. declare @versionFrom int
  193. set @versionFrom = (select V.currVersion from DBVersion V)
  194. declare @query varchar(2000)
  195.  
  196. if @versionTo <= 7 and @versionTo >= 0
  197. if @versionTo > @versionFrom
  198. begin
  199. while @versionTo > @versionFrom
  200. begin
  201. set @versionFrom = @versionFrom + 1
  202. set @query = 'do' + CAST(@versionFrom as varchar(5))
  203. exec @query
  204. end
  205. end
  206. else
  207. begin
  208. while @versionTo < @versionFrom
  209. begin
  210. if @versionFrom != 0
  211. begin
  212. set @query = 'undo' + CAST(@versionFrom as varchar(5))
  213. exec @query
  214. end
  215. set @versionFrom = @versionFrom - 1
  216. end
  217. end
  218. else
  219. begin
  220. print 'version has to be <= 7 and >= 0'
  221. return
  222. end
  223.  
  224. update DBVersion
  225. set currVersion = @versionTo
  226. end
  227. go
  228.  
  229. exec TakeMeToVersion 1;
  230. select * from DBVersion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement