Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: DanteInfernum en 17 Septiembre 2013, 19:42 pm



Título: T-SQL ¿Cuándo debo usar GO?
Publicado por: DanteInfernum en 17 Septiembre 2013, 19:42 pm
Tengo el siguiente script de ejemplo para crear una base de datos:


Código
  1. USE master
  2. GO
  3. CREATE DATABASE Prueba
  4. GO
  5. USE Prueba
  6. GO
  7. CREATE TABLE Empleados(A, B, C)
  8. GO
  9. CREATE TABLE Secciones(D, E, F)
  10. GO
  11. INSERT INTO Empleados VALUES('Ana', 'Sosa', 'Yi 1111')
  12. INSERT INTO Empleados VALUES('Eva', 'Rocha')
  13. GO
  14. INSERT INTO Secciones VALUES('Cre', 'Credito')
  15.        INSERT INTO Secciones VALUES('Ger', 'Gerencia')


Mis preguntas: ¿Es absolutamente necesario usar el GO cada vez que creo algo? Porque he visto que perfectamente puedo omitir algunos y el script se sigue ejecutando tal cual lo hacía antes. ¿Es una buena práctica usar tantos GO cómo sea posible?


Título: Re: T-SQL ¿Cuándo debo usar GO?
Publicado por: DanteInfernum en 19 Septiembre 2013, 18:54 pm
Voy agregando lo que vaya encontrando. Talvez le sirva a alguien más.


"La instrucción CREATE PROCEDURE no se puede combinar con otras instrucciones Transact-SQL en un único lote."

O sea, si el procedimiento que estoy creando no encabeza el script, debe de ser precedido por un GO, de modo tal que el procedimiento se enviará al servidor en un lote destinado exclusivamente para esto.

--------------------

Edito:

"Las instrucciones CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE SCHEMA, CREATE TRIGGER y CREATE VIEW no pueden combinarse con otras instrucciones de un lote. El lote debe empezar con una instrucción CREATE. Las siguientes instrucciones del lote se interpretarán como parte de la definición de la primera instrucción CREATE."

Moraleja: cada vez que se use un CREATE algo, hay que poner un GO antes.