Creación de tablas: TipoEvento, BitacoraEvento, DBError y Error

Fecha: viernes 17 de abril de 2026

Hora de inicio: 10:00 a.m.

Hora de finalización: 11:10 a.m.

Horas trabajadas: 1 h 10 min

El plan para esta sesión era crear las tablas que me correspondían según la división de trabajo que Johana y yo definimos por WhatsApp. Ella se encargaría de Puesto, Empleado, TipoMovimiento, Movimiento y Usuario; yo de TipoEvento, BitacoraEvento, DBError y Error. Nos coordinamos para trabajar en paralelo y así avanzar más rápido.

Actividades realizadas

10:00 a.m. – 10:25 a.m. — Problema con “USE BDTarea2

Lo primero que hice fue abrir el script de tablas en SSMS, conectada al servidor en Azure. Al intentar ejecutarlo, me apareció un error que no esperaba, relacionado con la línea “USE BDTarea2 al inicio del script. Nunca había tenido ese problema antes, así que tuve que investigar.

Después de buscar, entendí que se debía a que en Azure SQL Database, a diferencia de una instancia local de SQL Server, no se puede usar “USE [NombreBD] dentro de un script porque ya se establece la base de datos activa directamente en la cadena de conexión desde SSMS. Intentar cambiarlo con dicha sentencia genera un error porque Azure no lo permite de esa forma en el contexto de SQL Database (PaaS). La solución fue simplemente eliminar esa línea del script.

La moraleja es que Azure SQL Database tiene algunas diferencias con respecto a una instancia local de SQL Server que no son obvias al principio, y este fue el primer encontronazo con una de ellas.

Referencia:

En Azure SQL Database, el parámetro de base de datos solo puede hacer referencia a la base de datos actual. Si se proporciona una base de datos distinta de la base de datos actual, la USE instrucción no cambia entre bases de datos y se devuelve el código de error 40508. Para cambiar de base de datos, debe conectarse directamente a la base de datos. La USE instrucción se marca como no aplicable a Azure SQL Database en la parte superior de esta página, ya que aunque puede tener la USE instrucción en un lote, no hace nada (Microsoft).

10:25 a.m. – 11:00 a.m. — Creación de las tablas

Con eso resuelto, procedí a crear mis cuatro tablas. La lógica de cada una fue la siguiente:

TipoEvento: tabla catálogo sencilla. El id no es IDENTITY porque, según las indicaciones de la tarea, los catálogos traen el id definido desde el XML para garantizar que todos los equipos tengan los mismos ids.

BitacoraEvento: esta fue la más interesante de definir porque tiene dos llaves foráneas: una hacia TipoEvento y otra hacia Usuario. Nunca había trabajado con FOREIGN KEY de forma explícita en un script, así que antes de escribir el código me detuve a investigar la sintaxis correcta (documentación oficial de Microsoft) y a entender bien las relaciones entre las tablas.

Lo que aprendí es que el CONSTRAINT se define dentro del CREATE TABLE con la cláusula FOREIGN KEY ... REFERENCES, y que es importante que la tabla referenciada ya exista en la base de datos antes de crear la que tiene la llave foránea. Por eso TipoEvento y Usuario tenían que estar creadas primero. En nuestro caso, Johana ya había hecho commit de sus tablas (incluyendo Usuario), así que no hubo problema de dependencias.

DBError: tabla para registrar errores técnicos capturados en los bloques CATCH de los procedimientos almacenados. Todos sus campos son opcionales (sin NOT NULL) porque dependiendo del error, no todos los datos pueden estar disponibles al momento de registrarlo.

Error: tabla catálogo de mensajes de error. Tiene un campo Codigo separado del id porque el código de error es el que se retorna desde los SPs y se consulta desde la capa lógica, no el id interno de la tabla.

11:00 a.m. – 11:10 a.m. — Ajustes de consistencia en el script

Antes de hacer el commit, revisé el script completo y noté algunas inconsistencias menores con el código que ya había subido Johana: diferencias de indentación y algunas longitudes de VARCHAR que no coincidían con los campos equivalentes en mis tablas. Los ajusté para que el script quedara uniforme y consistente con los estándares de codificación del curso.

Forma de trabajo del equipo

Johana y yo nos coordinamos por WhatsApp desde el inicio de la mañana para repartirnos las tablas y arrancar en paralelo. Ella hizo su commit primero; yo terminé con el mío a las 11:10 a.m. una vez que tuve todo listo y revisado.

Referencias:

USE (Transact-SQL)

Primary and foreign key constraints

Create foreign key relationships

Comentarios

Entradas más populares de este blog

Creación del SP de Cargar Datos

Implementación de funcionalidades: Editar Empleado y Eliminar Empleado

Implementación de funcionalidad: Consultar Empleado