UTNianos

Versión completa: [APORTE ] Final GDD 26/02/2019
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Gente, me saqué esta materia del orto por fin. Hice todos los puntos menos un v-f asi que lo que hice está todo bien (metí un 9 milagroso)

TEORÍA:
1a) ni la mas pálida idea Pochoclo2
1b) V (Segun leí... solo sql server acepta 1 unico null para unique, pero así y todo me la tomaron como bien)

2a y 2b) Nada raro... ACID tal cual está en wikipedia, Triggers tal cual está en los apuntes de Zaffaroni


PRÁCTICA:
3a) Aca la opción es la 4 (Ésta practicamente la contestó Reinosa cuando le pregunté si el "campoA" tenía valores unicos, a lo que contestó: "para el resultado no importa". Asi que por descarte era la 4)

3b) Acá metí 2 triggers after, uno en Persona (Insert/update porque si se borra una persona la fk no importa) y otro en Ciudades (Solo para Delete porque si se inserta una Ciudad la fk no importa y un update de una PK no se puede hacer). La otra cosa a tener en cuenta eran las operaciones masivas, que lo resolví contando cuantas no cumplian la condición y si ese numero era > 0 => hacer un rollback. Aca esta el codigo:

CREATE trigger t1 ON Persona AFTER Insert, Update
AS
BEGIN
IF ( select count(*) from Inserted where Ciudad not in (select idCiudad from Ciudades) ) > 0
BEGIN
RAISERROR('Error', 16, 1)
ROLLBACK TRANSACTION
END
END

CREATE trigger t2 ON Ciudades AFTER Delete
AS
BEGIN
IF ( select count(*) from Deleted where idCiudad in (select distinct Ciudad from Persona) ) > 0
BEGIN
RAISERROR('Error', 16, 1)
ROLLBACK TRANSACTION
END
END

Espero que le sirva a alguien.

Saludos.
Creo que el 3b se puede resolver de una manera más sencilla...

Como el inicio de la consigna te dice que la tabla no posee ninguna constraint, uno podría ejecutar este código:
ALTER TABLE Persona
ADD FOREIGN KEY Ciudad REFERENCES Ciudades(Ciudad)


¿Puede ser?
pablit, como va? Si bien tu solucion resolveria el problema que piden, creo que estarias "esquivando el bulto" =D si lo haces de esa manera.

Fijate que dice "crear los objetos necesarios" (vos no creas ninguno, solo actualizas tabla) y luego dice "para emular que el campo ciudad sea una FK", cosa que tampoco estas haciendo porque directamente le estas agregando la FK.

Creo que justamente se pretende que desarrolles un trigger.

Saludos!
Creo que tenés razón.
URLs de referencia