From iamargelh, 1 Year ago, written in Plain Text.
This paste will expire in 1 Second.
Embed
  1. --UNIDAD 4
  2.  
  3. CREATE DATABASE BANCO
  4. USE BANCO
  5. CREATE TABLE CLIENTE
  6. (
  7. id_cliente INT not null,
  8. nombre VARCHAR(30) not null,
  9. telefono VARCHAR(12),
  10. PRIMARY KEY(id_cliente)
  11. )
  12. CREATE TABLE CUENTA
  13. (
  14. id_cuenta INT not null,
  15. monto INT,
  16. cve_cliente INT not null,
  17. PRIMARY KEY(id_cuenta),
  18. FOREIGN KEY(cve_cliente) REFERENCES CLIENTE(id_cliente)
  19. )
  20. --Agrega una restricción Check para validar que el monto  de la cuenta sea mayor a Cero.
  21.  
  22. ALTER TABLE CUENTA
  23. IADD CONSTRAINT CK_CUENTA_monto
  24. check (monto>=0);
  25. INSERT INTO CLIENTE(id_cliente,nombre,telefono) values
  26. (1,'PEDRO LARES','99999'),
  27. (2,'AGAPITO BUELNA','99999'),
  28. (3,'EMILIO LOPEZ','999999'),
  29. (4,'CAMILO SUAREZ','999999')
  30. INSERT INTO CUENTA(id_cuenta,monto,cve_cliente) values
  31. (100,1000,1),
  32. (200,1000,2),
  33. (300,1000,3),
  34. (400,1000,4)
  35. --visualizar las tablas
  36. SELECT * FROM CLIENTE
  37. SELECT * FROM CUENTA
  38. --Transaccion Exitosa
  39. BEGIN TRANSACTION DEPOSITO
  40.  UPDATE CUENTA SET monto=monto+10000 WHERE cve_cliente=1
  41.  --Visualizar la tabla CUENTA para checar el monto del cliente 1
  42.  COMMIT TRANSACTION DEPOSITO
  43. /*CHECAMOS*/
  44. SELECT * FROM CUENTA
  45. --Transaccion Rechazada
  46. BEGIN TRANSACTION RETIRO
  47.  UPDATE CUENTA SET MONTO=MONTO-10000 WHERE cve_cliente=1
  48. -Visualizar la tabla CUENTA para checar el monto del cliente 1
  49.  ROLLBACK TRANSACTION RETIRO
  50. /*CHECAMOS*/
  51. SELECT * FROM CUENTA
  52. --Transaccion Con Save Point
  53. BEGIN TRANSACTION NUEVA
  54. UPDATE CLIENTE SET nombre='PANFILO' where id_cliente=1
  55. SAVE TRANSACTION MARCA
  56. UPDATE CLIENTE SET nombre='MARIA' where id_cliente=2
  57. UPDATE CLIENTE SET nombre='GRACIELA' where id_cliente=3
  58. ROLLBACK TRANSACTION MARCA
  59. COMMIT TRANSACTION NUEVA
  60. /*CHECAMOS*/
  61. SELECT * FROM CLIENTE
  62. /*RETOMAMOS EL EJEMPLO DEL VIDEO, CON UN NUMERO DE CONTROL
  63. EXISTENTE*/
  64. --Transaccion Alta Fracaso en CLIENTE
  65. BEGIN TRANSACTION ALTA_FRACASO
  66. SAVE TRANSACTION SAVE_ALTA_FRA
  67. INSERT INTO CLIENTE (id_cliente,nombre) VALUES (1,'LUISA')
  68. IF(@@ERROR <> 0)
  69. BEGIN
  70.  ROLLBACK TRANSACTION SAVE_ALTA_FRA
  71.  PRINT('ERROR FALLASTE, YA EXISTE ESTE CLIENTE....!!!')
  72. END
  73. ELSE
  74. BEGIN
  75.  COMMIT TRANSACTION ALTA_FRACASO
  76.  PRINT('BIEN, EXITO.....!!!')
  77.  END
  78. /*CHECAMOS*/
  79. SELECT * FROM CLIENTE
  80. --Transaccion Alta Exitosa en CLIENTE
  81. BEGIN TRANSACTION ALTA_EXITO
  82. SAVE TRANSACTION SAVE_ALTA_EX
  83. INSERT INTO CLIENTE (id_cliente,nombre) VALUES (5,'LUISA')
  84. IF(@@ERROR <> 0)
  85. BEGIN
  86.  ROLLBACK TRANSACTION SAVE_ALTA_EX
  87.  PRINT('ERROR FALLASTE, YA EXISTE ESTE CLIENTE....!!!')
  88. END
  89. ELSE
  90. BEGIN
  91.  COMMIT TRANSACTION ALTA_EXITO
  92.  PRINT('BIEN, EXITO.....!!!')
  93.  END
  94. /*CHECAMOS*/
  95. SELECT * FROM CLIENTE
  96. --RETIRO2 CON MENSAJE DE ERROR
  97. BEGIN TRANSACTION RETIRO2
  98. SAVE TRANSACTION SAVE_RETIRO2
  99.  UPDATE CUENTA SET monto=monto-1000 WHERE cve_cliente=1
  100.  --Visualizar la tabla CUENTA para checar el monto del
  101. cliente 1
  102.  
  103.  IF(@@ERROR <> 0)
  104. BEGIN
  105.  ROLLBACK TRANSACTION SAVE_RETIRO2
  106.  PRINT('ERROR SALDO INSUFICIENTE....!!!')
  107. END
  108.  ELSE
  109. BEGIN
  110.  COMMIT TRANSACTION RETIRO2
  111.  PRINT('RETIRO EXITOSO.....!!!')
  112.  END
  113. /*CHECAMOS*/
  114. SELECT * FROM CUENTA
  115. -- RETIRO3 CON MENSAJE DE ERROR
  116. BEGIN TRANSACTION RETIRO3
  117. SAVE TRANSACTION SAVE_RETIRO3
  118.  UPDATE CUENTA SET monto=monto-3000 WHERE cve_cliente=2
  119.  --Visualizar la tabla CUENTA para checar el monto del cliente 1
  120.  IF(@@ERROR <> 0)
  121. BEGIN
  122.  ROLLBACK TRANSACTION SAVE_RETIRO3
  123.  PRINT('ERROR SALDO INSUFICIENTE....!!!')
  124. END
  125.  ELSE
  126. BEGIN
  127.  COMMIT TRANSACTION RETIRO3
  128.  PRINT('RETIRO EXITOSO.....!!!')
  129.  END
  130. /*CHECAMOS*/
  131. SELECT * FROM CUENTA
  132.  
  133. --UNIDAD 5
  134.  
  135. /* FUNCION PARA PASAR A MAYUSCULA UNA PALABRA*/
  136. CREATE FUNCTION DBO.MAYUSCULA
  137. (@PALABRA VARCHAR(45))
  138. RETURNS VARCHAR(45)
  139. AS
  140. BEGIN
  141.  SET @PALABRA=UPPER(@PALABRA)
  142.  RETURN @PALABRA
  143. END
  144. --Ejecutar la función.-
  145. PRINT DBO.MAYUSCULA('maria lopez')
  146.  
  147. --PROCEDURE
  148. CREATE PROCEDURE WSP_LISTA_ALUMNOS
  149. AS
  150. SELECT CONTROL AS CONTROL,NOMBRE_ALUMNO+' '+APELLIDO_PATERNO+'
  151. '+APELLIDO_MATERNO AS NOMBRE_ALUMNO, CORREO_ELECTRONICO FROM ALUMNO
  152.  
  153. --EJECUTAR.-
  154. EXEC WSP_LISTA_ALUMNOS
  155. --OTRO
  156. CREATE PROCEDURE WSP_FECHANACIMIENTO
  157. @F1 DATETIME
  158. AS
  159. BEGIN
  160.  SELECT * FROM ALUMNO WHERE FECHA_NACIMIENTO = @F1
  161. END
  162. --EJECUTAR.-
  163. EXECUTE WSP_FECHANACIMIENTO @F1='19-11-1993'
  164. GO
  165. --OTRO
  166. CREATE PROCEDURE WSP_ENTIDAD_FEDERATIVA
  167. @entidad float
  168. AS
  169. SELECT * FROM ALUMNO WHERE entidad_procedencia = @entidad
  170. GO
  171. EJECUTAR.-
  172. EXEC WSP_ENTIDAD_FEDERATIVA @entidad=26
  173. GO
  174.  
  175.  
  176.  
  177. --TRIGGERS
  178. CREATE TRIGGER NOMBRE_TRIGGER
  179. ON [TABLE | VIEW ]
  180. FOR | AFTER |INSTEAD OF
  181. [ INSERT ][ , ][ UPDATE ][ ,] [ DELETE ]
  182. AS
  183. BEGIN
  184. SENTENCIA_SQL
  185. END
  186. /*
  187. FOR | AFTER: AFTER específica que el desencadenador DML sólo se activa
  188. cuando todas las operaciones especificadas en la instrucción SQL
  189. desencadenadora se han ejecutado correctamente. Además, todas las acciones
  190. referenciales en cascada y comprobaciones de restricciones deben ser correctas
  191. para que este desencadenador se ejecute. AFTER es el valor predeterminado
  192. cuando solo se especifica la palabra FOR. Los desencadenarores AFTER no se
  193. pueden definir en las vistas.
  194. INSTEAD OF: Especifica que se ejecuta el desencadenador DML en vez de
  195. la instrucción SQL desencadenadora, por lo que se suplantan las acciones de las
  196. instrucciones desencadenadoras. INSTEAD OF no se puede especificar para
  197. desencadenadores DDL. Como máximo, se puede definir un desencadenador*/
  198.  
  199. --d).-DESACTIVAR UN TRIGGER
  200. ALTER TRIGGER nombreTrigger DISABLE;
  201.  
  202.