Hello, je cherche a "traduire" ce trigger d'Oracle en Sql Server :
create or replace trigger T_ADRESSE
before insert on ADRESSE for each row
begin
select ID_ADRESSE.nextval into :new.ID_ADRESSE from dual;
end;
/
Merci a tous
Lois
Hello, je cherche a "traduire" ce trigger d'Oracle en Sql Server :
create or replace trigger T_ADRESSE
before insert on ADRESSE for each row
begin
select ID_ADRESSE.nextval into :new.ID_ADRESSE from dual;
end;
/
Merci a tous
Lois
Salut,
Oracle ne gère pas les champs de type Auto Increment de manière automatique, mais SQL Server si : donc pourquoi ne pas déclarer ton champ T_ADRESSE.ID_ADRESSE en auto-Increment ?
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau
"Expliquer empêche de comprendre si cela dispense de chercher"
Quiz Oracle : venez tester vos connaissances !
La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
SQL Server ne possède pas de trigger BEFORE et ne permet pas dans un trigger de jouer le code FOR EACH ROW, sauf à coder à l'aide d'un curseur.
De plus les séquenceurs n'existent pas dans SQL Server.
Mais comme l'a judicieusement fait remarqué Xo (qui doit être un alcoolique notoire, accro au cognac vu son pseudo ;-) ) c'est inutile sous SQL Server car il suffit d'utiliser la propriété IDENTITY dans la définition d'une colonne pour la faire devenir auto incrémentée.
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour, j'ai moi aussi un problème du genre. Je dois convertir ce trigger oracle (que je n'ai pas écris moi-même) pour sql server. Je ne sais pas comment faire... La moitié des mots clés d'oracle n'existent pas en SQL server. Est ce que quelqun peut m'aider svp ? Merci
Voici le code du Trigger :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 CREATE OR REPLACE TRIGGER flg_modif_param_critere AFTER INSERT OR DELETE OR UPDATE ON critere REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW DECLARE sRetour VARCHAR(10) := null; BEGIN IF INSERTING THEN ----------------- PKG_TRACE.logdansfichier('Trig CRITERE::INSERTING '||TO_CHAR(:NEW.IDT_CRITERE),'C:\Database\SUMOBLV\LOG\','TraceLOT4.txt','A'); BEGIN EXECUTE IMMEDIATE 'TRUNCATE TABLE BROUIL_SEL_ELEMENT_STATUS'; EXECUTE IMMEDIATE 'TRUNCATE TABLE SEL_ELEMENT_STATUS'; EXCEPTION WHEN OTHERS THEN PKG_TRACE.logdansfichier('Trig CRITERE::INSERTING err'||sqlcode,'C:\Database\SUMOBLV\LOG\','TraceLOT4.txt','A'); null; END; END IF ; IF UPDATING THEN ---------------- BEGIN EXECUTE IMMEDIATE 'TRUNCATE TABLE BROUIL_SEL_ELEMENT_STATUS'; EXECUTE IMMEDIATE 'TRUNCATE TABLE SEL_ELEMENT_STATUS'; EXCEPTION WHEN OTHERS THEN null; END; END IF ; IF DELETING THEN ---------------- PKG_TRACE.logdansfichier('Trig CRITERE::DELETING','C:\Database\SUMOBLV\LOG\','TraceLOT4.txt','A'); BEGIN EXECUTE IMMEDIATE 'TRUNCATE TABLE BROUIL_SEL_ELEMENT_STATUS'; EXECUTE IMMEDIATE 'TRUNCATE TABLE SEL_ELEMENT_STATUS'; EXCEPTION WHEN OTHERS THEN null; END; END IF ; End ;
Je prends en général 800 € HT / jour pour faire ce genre de boulot...
Veuillez contacter mon entreprise : www.sqlspot.com.
Sincères salutations
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
euh oui....
Mais en fait, je préfèrerais avoir des pistes pour pouvoir le traduire moi-même...
Par exemple, j'ai vu que le "OR replace " n'existe pas en T-SQL. Y a-t-il un moyen pour remplacer le trigger ?
Pour le "For eache row", apparemment il faudrait que j'utilise un curseur, si j'ai bien suivi les réponses précédentes.
Mais par exemple, ma clause REFERENCING, que devient-'elle ? elle ne semble pas exister avec SQL Server...
Partager