Insertion de références par OID (INSERT)

Pour faire une référence avec un OID, il est nécessaire de récupérer l'OID correspondant à l'enregistrement que l'on veut référencer.

L'OID est accessible grâce à la syntaxe REF en SQL3.

SyntaxeREF

Appuyer sur espace pour rester en pause.
1
SELECT REF(alias)
2
FROM nom_table alias
1
0000280209DB703686EF7044A49F8FA67530383B36853DE7106BC74B6781275ABE5A553A5F01C000340000

SyntaxeInsertion de données en SQL

Appuyer sur espace pour rester en pause.
1
INSERT INTO table1 (champs1, ..., clé_étrangère)
2
SELECT 'valeur1', ...,  REF(alias)
3
FROM table2 alias
4
WHERE clé_table2='valeur';

SyntaxeInsertion de données en PL/SQL

Appuyer sur espace pour rester en pause.
1
DECLARE 
2
variable REF type_objet;
3
BEGIN
4
SELECT REF(alias) INTO variable
5
FROM table2 alias
6
WHERE clé_table2='valeur';
7
8
INSERT INTO tCours (champs1, ..., clé_étrangère)
9
VALUES ('valeur1', ...,  variable);
10
END;

Exemple

Appuyer sur espace pour rester en pause.
1
DECLARE
2
	refI REF typIntervenant;
3
BEGIN
4
	INSERT INTO tIntervenant (pknom, prenom)
5
	VALUES 	('CROZAT', 'Stéphane');
6
7
	SELECT REF(i) INTO refI
8
	FROM tIntervenant i
9
	WHERE pknom='CROZAT';
10
11
	INSERT INTO tCours (pkannee, pknum, titre, type, debut, refintervenant) 
12
	VALUES 	('2003', 1, 'Introduction','C', '01-JAN-2001', refI);
13
14
	INSERT INTO tCours (pkannee, pknum, titre, type, debut, refintervenant) 
15
	VALUES 	('2003', 2, 'Modélisation','TD', '02-JAN-2001', refI);
16
END;
17
/