Bases de Datos - base de datos con triggers

 
Vista:

base de datos con triggers

Publicado por rodrigo (1 intervención) el 27/07/2007 20:06:24
como hago un
1)Crear una Base de Datos Llamada PRUEBAN3

2)En dicha B.D. crear la tabla Alumnos con la siguiente estructura

i.AlumnoRut: Integer, PK

ii.AlumnoDV: char(1)

iii.AlumnoNombres: char(50)

iv.AlumnoApellidos: char(50)

3)Crear un TRIGGER INSTEAD OF para la operación INSERT de la tabla anterior y este debe hacer lo siguiente

a. se Debe Utilizar un cursor para recorrer la tabla INSERTED

b.Para cada registro de dicha tabla, Calcule UD. El digito verificador correspondiente según el RUT

c.Insertar definitivamente los datos en la Tabla Alumnos con el valor calculado para AlumnoDV.

...yo hasta ahora he hecho lo siguiente ,,pero me sale un error al insertar valores a mi tabla alumnos...
este es..
create database prueban3
use database prueban3
create table alumnos
(
alumno_rut integer not null,
alumno_dv char(1) ,
alumno_nombres char(50),
alumno_apellidos char(50),
constraint pk_alumno_rut primary key(alumno_rut)
)

create trigger Rodrigo on alumnos
instead of insert
as
begin
declare @RUT int
declare @RUTTEMP int
declare @RUTDIGI int
declare @ACUM int
declare @REST int
declare @CONT int
declare @DV char(1)
declare indice CURSOR FOR select alumno_dv,alumno_rut from INSERTED
open indice
fetch next from indice into @DV,@RUT

while @@fetch_status=0
begin

set @RUT = 1
WHILE (@RUT<10000000)
BEGIN
set @CONT = 2
set @ACUM = 0
set @RUTTEMP = @RUT
WHILE (@RUTTEMP>0)
BEGIN

set @RUTDIGI = @RUTTEMP - (@RUTTEMP/10)*10
set @RUTTEMP = @RUTTEMP/10
set @ACUM = @ACUM + @RUTDIGI*@CONT
set @CONT = @CONT + 1
IF (@CONT>7)
BEGIN
set @CONT = 2
END
END

set @REST = 11 - @ACUM % 11

IF @REST = 1
BEGIN
SET @DV = '1'
END
IF @REST = 2
BEGIN
SET @DV = '2'
END
IF @REST = 3
BEGIN
SET @DV = '3'
END
IF @REST = 4
BEGIN
SET @DV = '4'
END
IF @REST = 5
BEGIN
SET @DV = '5'
END
IF @REST = 6
BEGIN
SET @DV = '6'
END
IF @REST = 7
BEGIN
SET @DV = '7'
END
IF @REST = 8
BEGIN
SET @DV = '8'
END
IF @REST = 9
BEGIN
SET @DV = '9'
END
IF @REST = 10
BEGIN
SET @DV = 'K'
END
IF @REST = 11
BEGIN
SET @DV = '0'
end
print('se ha desencadenado un trigger')
insert into alumnos (alumno_dv) values (@DV)
end
fetch next from indice into @DV,@RUT
end
end
go

insert into alumnos(alumno_rut,alumno_nombres,alumno_apellidos) values (15276486 ,'rodrigo','salas')
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:base de datos con triggers

Publicado por Zamudio (1 intervención) el 25/03/2008 18:18:24
Bien, es parecido a lo que busco, gracias.. espero que me funcione...
..::Zamudio::..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar