Bonjour à tout,
j'ai besoin de faire qlques modifications sur le(s) clé(s) primaire(s) d'une table par exemle le(s) modifié(s) ou meme le(s) supprimé(s) meme si la table est référencée par d'autre table.
est-ce-que qelqu'un peut m'aider?
merci.
Bonjour à tout,
j'ai besoin de faire qlques modifications sur le(s) clé(s) primaire(s) d'une table par exemle le(s) modifié(s) ou meme le(s) supprimé(s) meme si la table est référencée par d'autre table.
est-ce-que qelqu'un peut m'aider?
merci.
cascade?
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 SQL> alter table jobcode drop primary key; alter table jobcode drop primary key * ERROR at line 1: ORA-02273: this unique/primary key is referenced by some foreign keys SQL> alter table jobcode drop primary key cascade; Table altered. SQL> alter table jobcode add primary key (creator); Table altered.
je veux pas supprimer la clé primaire d'une table et la remplacée par d'autre mais je veux modifier la valeur de la clé primaire d'un enregistrement ou bien supprimer un enregistrement meme s'il est réferencé par d'autres enregistrements.Donc j'ai besoin de récupérer les colonnes clés d'une table en question pour pouvoir modifier ces valeurs ou supprimer des enregistrements.
Bonjour,
Pourriez vous être plus clair dans la question ?
On ne peut pas supprimer des lignes d'une table si la clef primaire référence des lignes dans une autre table, sans avoir auparavant supprimé les enregistrements liés.
Cdt
Oui ça c'est claire. Mais j'ai besoin comme meme de supprimer des enregistrement ou de modifier leurs contenus meme s'ils sont référencés par d'autres enregistrements. Aussi je veux meme supprimer un seul enregistrement sans supprimer les autres enregistrement référencés.
Mon problème consiste à trouver les noms des colonnes qui constituent la clé primaire de la table pour pouvoir faire tous les modifications citées.
Il y a encore d'autres clauses CASCADE
sans clause cascade, impossible d'effacer la valeur
avec on delete cascade, les lignes filles sont effacées (dangereux!)
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 SQL> create table t1(x number primary key); Table created. SQL> create table t2(y number primary key, 2 x number references t1(x)); Table created. SQL> insert into t1 values (1); 1 row created. SQL> insert into t2 values (1,1); 1 row created. SQL> delete t1 where x=1; delete t1 where x=1 * ERROR at line 1: ORA-02292: integrity constraint (AUDBA.SYS_C0018046) violated - child record found
avec on delete set null, les valeurs sont mises à NULL
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 SQL> drop table t1; Table dropped. SQL> create table t1(x number primary key); Table created. SQL> create table t2(y number primary key, 2 x number references t1(x) on delete cascade); Table created. SQL> insert into t1 values (1); 1 row created. SQL> insert into t2 values (1,1); 1 row created. SQL> delete t1 where x=1; 1 row deleted. SQL> select * from t2; no rows selected
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 SQL> drop table t2; Table dropped. SQL> drop table t1; Table dropped. SQL> create table t1(x number primary key); Table created. SQL> create table t2(y number primary key, 2 x number references t1(x) on delete set null); Table created. SQL> insert into t1 values (1); 1 row created. SQL> insert into t2 values (1,1); 1 row created. SQL> delete t1 where x=1; 1 row deleted. SQL> select * from t2; Y X ---------- ---------- 1
quand au dictionaire pour trouver les tables filles, il y a entre autres USER_CONSTRAINTS et USER_CONS_COLUMNS
je suis tout à fait d'accord, mais je suis entrain de developper une application d'aide à l'administration d'1 BD oracle, tous les outils existant ne suppriment pas les lignes référencés mais comme meme c'est possible.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager