TREŚĆ POLECENIA BRZMI : Dla podanej poniżej tabeli Osoby napisz wyzwalacz, który w momencie dodawania osoby do bazy sprawdzi poprawność jej numeru PESEL (jeśli będzie niepoprawny to wycofa operację).
Gdzie może być błąd ? Jak robię za pierwszy razem insert to wszystko działa potem chce ponowni dopisać inny wiersz z poprawnym nr pesel i przestaje działać... pomocy
create table osoby
(id int identity(1,1) not null,
nazwisko varchar(40) not null,
data_urodzenia datetime not null,
pesel varchar(11))
CREATE TRIGGER pessel ON osoby
FOR INSERT
AS
SELECT pesel FROM Osoby
IF (select
((CAST(SUBSTRING(pesel,1,1) AS int)*1)
+(CAST(SUBSTRING(pesel,2,1) AS int)*3)
+(CAST(SUBSTRING(pesel,3,1) AS int)*7)
+(CAST(SUBSTRING(pesel,4,1) AS int)*9)
+(CAST(SUBSTRING(pesel,5,1) AS int)*1)
+(CAST(SUBSTRING(pesel,6,1) AS int)*3)
+(CAST(SUBSTRING(pesel,7,1) AS int)*7)
+(CAST(SUBSTRING(pesel,8,1) AS int)*9)
+(CAST(SUBSTRING(pesel,9,1) AS int)*1)
+(CAST(SUBSTRING(pesel,10,1) AS int)*3)
+CAST(SUBSTRING(pesel,11,1) AS int))%10 from Osoby) != 0
BEGIN
PRINT 'Wprowadzony pesel jest niepoprawny!'
ROLLBACK
END
GO
select * from Osoby
insert into osoby values ('wadfdfefi','1496-05-27','95052408098') //poprawny pesel
insert into osoby values ('wawesdbgdsvfi','1946-04-22','12345678901') //niepoprawny
insert into osoby values ('sdadasdas','1996-11-23','96042905652') // poprawny pesel
alter table osoby
enable trigger pessel
GO
alter table osoby
disable trigger pessel
GO
drop table osoby