Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Gestión de datos] Triggers
Autor Mensaje
AGUSTIN27 Sin conexión
Secretario de la SAE
INGENIEROOO :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 621
Agradecimientos dados: 20
Agradecimientos: 82 en 19 posts
Registro en: Feb 2010
Mensaje: #1
[Gestión de datos] Triggers Ejercicios Gestión de Datos
Hola chicos, tengo la siguiente tabla
create table usuario (
id_usuario primary key identity(1,1),
nombre varchar(50) ,
contraseña varchar(10)
)

entonces hago un insert into usuario (nombre,contraseña) values ('agustin','1234')

quiero hacer un trigger para que no me deje borrar ese registro en sql server.
Alguien sabe como puedo hacerlo? Gracias y saludos !!
30-06-2012 13:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
guidok Sin conexión
Secretario de la SAE
Sin estado :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 451
Agradecimientos dados: 22
Agradecimientos: 87 en 23 posts
Registro en: Dec 2008
Mensaje: #2
RE: [Gestión de datos] Triggers
Cada vez que se invoca un trigger tenés disponibles las tablas temporales "inserted" y "deleted" con los registros que se están tratando de insertar o eliminar según corresponda.

Entonces podés hacer algo así:

CREATE TRIGGER deleteUser
ON usuario
AFTER DELETE
AS
BEGIN
IF (EXISTS (SELECT 1 FROM deleted WHERE nombre='agustin')) ROLLBACK TRANSACTION
END

Creo que esto estaría bien, saludos!
30-06-2012 13:43
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] guidok recibio 1 Gracias por este post
nanuiit (01-07-2012)
federicogk Sin conexión
Profesor del Modulo A
HTTP :(
*****

Ing. en Sistemas
Facultad Regional Rosario

Mensajes: 336
Agradecimientos dados: 9
Agradecimientos: 45 en 10 posts
Registro en: Apr 2008
Mensaje: #3
RE: [Gestión de datos] Triggers
Si, lo que dice guidok funciona, aunque si querés borrar mas de un nombre a la vez, no te dejaría borrar nada porque haría un rollback de todo.
Podrías probar también:

CREATE TRIGGER trgSaveAgustin ON usuario
INSTEAD OF DELETE
AS
BEGIN
DELETE FROM usuario
WHERE nombre in (select nombre from deleted where nombre not in ('agustin'))
IF EXISTS (SELECT null FROM deleted WHERE nombre in ('agustin'))
print('Se borraron todos los usuarios menos agustin')
END

Si mal no recuerdo, el trigger instead of reempleaza la sentencia que quería ejecutar el usuario y ejecuta el codigo del trigger, entonces en lugar de borrar y despues hacer rollback como lo haría el after, borra los registros omitiendo a agustin.
Supongo que seria útil si tenes varios nombres en el delete.

Estimado hijo de puta que no sabe escribir, aprenda que:
"Haber" es un verbo, "A ver" es mirar,"haver" no existe.
"Hay" es haber. "Ahí" es un lugar. "Ay" es una exclamación y "ahy" no existe.
“Haya” es haber. “Halla” es encontrar. “Allá” es un lugar y "haiga" no existe.
"Iba" es de ir. "IVA" es un impuesto e "Hiba" no existe.
"Valla" es una cerca, "Vaya" es ir y " Baya " es un fruto.
(Este mensaje fue modificado por última vez en: 30-06-2012 18:27 por federicogk.)
30-06-2012 18:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AGUSTIN27 Sin conexión
Secretario de la SAE
INGENIEROOO :)
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 621
Agradecimientos dados: 20
Agradecimientos: 82 en 19 posts
Registro en: Feb 2010
Mensaje: #4
RE: [Gestión de datos] Triggers
Joya chicos me re sirvio muchas gracias ! Este pibe guidok es un crack sabe todo siempre!!
01-07-2012 11:35
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.