1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER TRIGGER TRG_INSERT_COMPTES ON dbo.comptes
AFTER INSERT
AS
declare @profil varchar(200)
declare @adr_virtuelle varchar(200)
declare @type varchar(200)
declare @redirection varchar(200)
declare @num_stu varchar(200)
declare @id_user varchar(200)
declare @service varchar(64)
declare @programme varchar(50)
declare @frontal varchar(50)
declare @frontal_langue varchar(3)
declare @forfait varchar(255)
declare @domaine varchar(255)
declare @samaccountname varchar(12)
declare @login varchar(16)
declare @pwd varchar(200)
declare @nom varchar(26)
declare @prenom varchar(64)
/**********************************************************
Vérification des règles d'intégrité
**********************************************************/
set @erreurDetectee = 0
SELECT
@profil = CI.profil,
@type = CI.type,
@redirection = CI.redirection,
@num_stu = CI.num_stu,
@id_user = CI.id_user,
@service = CI.service,
@programme = CI.programme,
@frontal = frontal,
@frontal_langue = frontal_langue,
@forfait = forfait,
@domaine = domaine,
@samaccountname = samaccountname,
@nom = nom,
@prenom = prenom,
@pwd = pwd,
@login = login
FROM inserted CI
IF(@profil = 'virt' and @adr_virtuelle <> 'oui')
begin
RAISERROR (60000,16,1)
--ROLLBACK TRANSACTION
end
IF(((@type = 'e' AND @num_stu is not null) OR (@type = 'c')) AND @redirection is not null)
begin
RAISERROR (60001,16,1)
--ROLLBACK TRANSACTION
end
IF((@type = 'e' AND @num_stu is null) AND @redirection is null)
begin
RAISERROR (60002,16,1)
--ROLLBACK TRANSACTION
end
IF((@type = 'e' AND @num_stu is null) AND @redirection is null)
begin
RAISERROR (60002,16,1)
--ROLLBACK TRANSACTION
end
IF (@profil = 'adm' OR @profil = 'prof' OR @profil = 'stu')
begin
IF(@id_user is null)
begin
RAISERROR (60003,16,1)
--ROLLBACK TRANSACTION
end
IF(@adr_virtuelle <> 'non')
begin
RAISERROR (60004,16,1)
--ROLLBACK TRANSACTION
end
IF(@programme is null AND @service is null)
begin
RAISERROR (60005,16,1)
--ROLLBACK TRANSACTION
end
end
IF (@profil = 'adm' OR @profil = 'prof')
begin
IF(@frontal is null OR @frontal_langue is null OR @forfait is null or @service is null OR @type is null)
begin
RAISERROR (60006,16,1)
--ROLLBACK TRANSACTION
end
IF(@type <> 'c')
begin
RAISERROR (60007,16,1)
--ROLLBACK TRANSACTION
end
IF(@frontal <> 'owa')
begin
RAISERROR (60008,16,1)
--ROLLBACK TRANSACTION
end
IF(@forfait <> 'PC ET WEB 300Mo')
begin
RAISERROR (60009,16,1)
--ROLLBACK TRANSACTION
end
end
IF (@profil = 'virt')
begin
IF(@adr_virtuelle <> 'oui')
begin
RAISERROR (60010,16,1)
--ROLLBACK TRANSACTION
end
end
IF (@profil = 'vac')
begin
IF(@redirection is null)
begin
RAISERROR (60011,16,1)
--ROLLBACK TRANSACTION
end
IF(@domaine <> 'grenoble-em.com')
begin
RAISERROR (60012,16,1)
--ROLLBACK TRANSACTION
end
end
IF (@profil = 'stu')
begin
IF(@redirection is not null)
begin
RAISERROR (60014,16,1)
--ROLLBACK TRANSACTION
end
IF(@domaine <> 'grenoble-em.com')
begin
RAISERROR (60013,16,1)
--ROLLBACK TRANSACTION
end
end
IF(@type = 'c')
begin
IF @frontal <> 'owa'
begin
RAISERROR (60015,16,1)
--ROLLBACK TRANSACTION
end
IF @forfait <> 'PC ET WEB 300Mo'
begin
RAISERROR (60016,16,1)
--ROLLBACK TRANSACTION
end
IF @forfait <> 'PC ET WEB 300Mo'
begin
RAISERROR (60016,16,1)
--ROLLBACK TRANSACTION
end
IF (@samaccountname is null or @nom is null or @prenom is null or @login is null or @pwd is null)
begin
RAISERROR (60017,16,1)
--ROLLBACK TRANSACTION
end
end
IF(@type = 'e')
begin
IF (@profil <> 'stu' and @profil <> 'vac')
begin
RAISERROR (60018,16,1)
--ROLLBACK TRANSACTION
end
IF (@forfait is not null or @frontal is not null or @frontal_langue is not null)
begin
RAISERROR (60019,16,1)
--ROLLBACK TRANSACTION
end
IF (@nom is null or @prenom is null)
begin
RAISERROR (60020,16,1)
--ROLLBACK TRANSACTION
end
end
IF(@adr_virtuelle = 'oui')
begin
IF (@type <> 'c')
begin
RAISERROR (60021,16,1)
--ROLLBACK TRANSACTION
end
end
--Pas d'erreurs
UPDATE
comptes
SET
comptes.statChange=1,
comptes.calculMail = 1,
comptes.action=0,
datecrea = CAST(GETDATE() AS smalldatetime),
date_lastmaj = CAST(GETDATE() AS smalldatetime)
FROM Comptes,inserted
WHERE comptes.id_refmail = inserted.id_refmail
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO |
Partager