Rumah pangkalan data tutorial mysql 解析Oracle中多表级联删除的方法

解析Oracle中多表级联删除的方法

Jun 07, 2016 pm 04:19 PM
oracle padam kaedah menghuraikan

创建数据库时为了防止其他人不小心删除操作错误, 所有的外键都没有加级联删除。哪知,不知什么时候自己入了一批错误的数据进去,入库使用的是软件自动的,一下点错给自己带来无尽麻烦啊,删除就不好办了 表间的关系比较复杂,数据量又比较多,一个个删绝对

创建数据库时为了防止其他人不小心删除操作错误, 所有的外键都没有加级联删除。哪知,不知什么时候自己入了一批错误的数据进去,入库使用的是软件自动的,一下点错给自己带来无尽麻烦啊,删除就不好办了

 

表间的关系比较复杂,数据量又比较多,一个个删绝对会出大问题。于是实验了几种解决的办法,现小结一下。

方法一:创建约束时设定级联删除
(但一般由于各种原因或出于各种考虑在创建数据库时没有设定级联删除)
SQL语句:

复制代码 代码如下:


CREATE TABLE "U_WEN_BOOK"."FARTAB" ("FAR_ID" NUMBER(10) NOT NULL,
"FAR_NAME" VARCHAR2(10), "OTHER_NAME" VARCHAR2(10),
CONSTRAINT "PK_FER" PRIMARY KEY("FAR_ID"))

CREATE TABLE "U_WEN_BOOK"."CHILTAB" ("CHIL_ID" NUMBER(10) NOT
    NULL, "CHIL_NAME" VARCHAR2(10), "CHIL_OTHER" VARCHAR2(10),
    "FAR_ID" NUMBER(10) NOT NULL,
    CONSTRAINT "PK_CHIL" PRIMARY KEY("CHIL_ID"),
    CONSTRAINT "FK_CHIL" FOREIGN KEY("FAR_ID")
REFERENCES "U_WEN_BOOK"."FARTAB"("FAR_ID") ON DELETE CASCADE)


方法二:创建约束时没有使用级联删除,,在需要使用级联删除时,删除原来的外键约束,重建带级联删除的约束
(实验证明完全可行,注意需要对已经存在的数据进行验证,否则新建的约束对原有数据不具备效率,默认是验证的,若强制要求不验证,使用NOVALIDATE关键词。还有外键引用的只能是唯一主键)
SQL语句:

复制代码 代码如下:


ALTER TABLE "U_WEN_BOOK"."GCHILTAB1"
    DROP CONSTRAINT "FK_G1"
ALTER TABLE "U_WEN_BOOK"."GCHILTAB1"
  ADD (CONSTRAINT "FK_G1" FOREIGN KEY()
    REFERENCES "U_WEN_BOOK"."CHILTAB"()
    ON DELETE CASCADE)
(这样就可以级联删除了,删除完后,如果不放心这样的约束条件,并且不嫌麻烦可以再重建为不带级联删除等外键约束,防止误操作)


方法三:使用触发器(创建时没有级联删除)
(比较灵活,可以根据自己编写的程序进行,引用的不是唯一主键也可以)
(1)创建表及插入数据
SQL语句:

复制代码 代码如下:


create   table orderCombine   (  
O_Id                     VARCHAR2(16)     not   null,  
OrderId           VARCHAR2(15)     not   null,                        
FormerId         VARCHAR2(16)     not   null,  
constraint   PK_ORDERCOMBINE   primary   key   (FormerId) );
   create   table   VIPForm     (  
V_Id                     VARCHAR2(16)       not   null,              
IsValid           CHAR(1)   default   '0'     not   null     ,                  
Constraint fk_vipform foreign key(V_id)   references   ordercombine(formerid) );  
insert into orderCombine values('1','1','1'); insert into orderCombine values('2','2','2'); insert into vipform values('1','5'); insert into vipform values('2','4'); insert into vipform values('1','2');


结果:
(2)创建触发器:
SQL:

复制代码 代码如下:


CREATE OR REPLACE TRIGGER "FG123"."TER_OV"
BEFORE
DELETE ON "ORDERCOMBINE" FOR EACH ROW
BEGIN
DELETE   FROM   VIPForm
WHERE   VIPForm.V_Id=:OLD.FormerId;
END;


(3)删除及结果:
SQL:

复制代码 代码如下:


DELETE FROM "FG123"."ORDERCOMBINE"
WHERE FormerId ='1'


方法四:若表间关系简单(就两张表),涉及到的记录也很少(总共就几行记录),直接删除子表中的相关记录,再删除父表中的记录即可。
(前面的方法在涉及数据量较大以及表间关系比较复杂时才有效率上的优势,简单的直接删除来的更快)
如上例中,直接删除
SQL语句:

复制代码 代码如下:


DELETE FROM "FG123"."ORDERCOMBINE"
WHERE VIPForm ='1';

DELETE FROM "FG123"."ORDERCOMBINE"
WHERE FormerId ='1'

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Urutan langkah permulaan pangkalan data oracle ialah Urutan langkah permulaan pangkalan data oracle ialah May 10, 2024 am 01:48 AM

Urutan permulaan pangkalan data Oracle ialah: 1. Semak prasyarat 2. Mulakan pendengar 3. Mulakan contoh pangkalan data 5. Sambungkan ke pangkalan data; . Dayakan perkhidmatan (jika perlu );

Berapa lama log pangkalan data Oracle akan disimpan? Berapa lama log pangkalan data Oracle akan disimpan? May 10, 2024 am 03:27 AM

Tempoh pengekalan log pangkalan data Oracle bergantung pada jenis log dan konfigurasi, termasuk: Buat semula log: ditentukan oleh saiz maksimum yang dikonfigurasikan dengan parameter "LOG_ARCHIVE_DEST". Log buat semula yang diarkibkan: Ditentukan oleh saiz maksimum yang dikonfigurasikan oleh parameter "DB_RECOVERY_FILE_DEST_SIZE". Log buat semula dalam talian: tidak diarkibkan, hilang apabila pangkalan data dimulakan semula dan tempoh pengekalan adalah konsisten dengan masa berjalan contoh. Log audit: Dikonfigurasikan oleh parameter "AUDIT_TRAIL", dikekalkan selama 30 hari secara lalai.

Berapa banyak memori yang diperlukan oleh oracle? Berapa banyak memori yang diperlukan oleh oracle? May 10, 2024 am 04:12 AM

Jumlah memori yang diperlukan oleh Oracle bergantung pada saiz pangkalan data, tahap aktiviti dan tahap prestasi yang diperlukan: untuk menyimpan penimbal data, penimbal indeks, melaksanakan pernyataan SQL dan mengurus cache kamus data. Jumlah yang tepat dipengaruhi oleh saiz pangkalan data, tahap aktiviti dan tahap prestasi yang diperlukan. Amalan terbaik termasuk menetapkan saiz SGA yang sesuai, saiz komponen SGA, menggunakan AMM dan memantau penggunaan memori.

Bagaimana untuk membaca fail dbf dalam oracle Bagaimana untuk membaca fail dbf dalam oracle May 10, 2024 am 01:27 AM

Oracle boleh membaca fail dbf melalui langkah-langkah berikut: buat jadual luaran dan rujuk fail dbf untuk mendapatkan semula data yang diimport ke dalam jadual Oracle;

Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle May 10, 2024 am 04:00 AM

Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle: Pemproses: berbilang teras, dengan frekuensi utama sekurang-kurangnya 2.5 GHz Untuk pangkalan data yang besar, 32 teras atau lebih disyorkan. Memori: Sekurang-kurangnya 8GB untuk pangkalan data kecil, 16-64GB untuk saiz sederhana, sehingga 512GB atau lebih untuk pangkalan data yang besar atau beban kerja yang berat. Storan: Cakera SSD atau NVMe, tatasusunan RAID untuk lebihan dan prestasi. Rangkaian: Rangkaian berkelajuan tinggi (10GbE atau lebih tinggi), kad rangkaian khusus, rangkaian kependaman rendah. Lain-lain: Bekalan kuasa yang stabil, komponen berlebihan, sistem pengendalian dan perisian yang serasi, pelesapan haba dan sistem penyejukan.

Berapa banyak memori yang diperlukan untuk menggunakan pangkalan data oracle Berapa banyak memori yang diperlukan untuk menggunakan pangkalan data oracle May 10, 2024 am 03:42 AM

Jumlah memori yang diperlukan untuk pangkalan data Oracle bergantung pada saiz pangkalan data, jenis beban kerja dan bilangan pengguna serentak. Cadangan am: Pangkalan data kecil: 16-32 GB, Pangkalan data sederhana: 32-64 GB, Pangkalan data besar: 64 GB atau lebih. Faktor lain yang perlu dipertimbangkan termasuk versi pangkalan data, pilihan pengoptimuman memori, virtualisasi dan amalan terbaik (pantau penggunaan memori, laraskan peruntukan).

Tugas berjadual Oracle melaksanakan langkah penciptaan sekali sehari Tugas berjadual Oracle melaksanakan langkah penciptaan sekali sehari May 10, 2024 am 03:03 AM

Untuk mencipta tugas berjadual dalam Oracle yang dilaksanakan sekali sehari, anda perlu melakukan tiga langkah berikut: Buat kerja. Tambahkan subkerja pada kerja dan tetapkan ungkapan jadualnya kepada "INTERVAL 1 HARI". Dayakan kerja.

Berapa banyak memori yang diperlukan oleh pangkalan data oracle? Berapa banyak memori yang diperlukan oleh pangkalan data oracle? May 10, 2024 am 02:09 AM

Keperluan memori Pangkalan Data Oracle bergantung pada faktor berikut: saiz pangkalan data, bilangan pengguna aktif, pertanyaan serentak, ciri yang didayakan dan konfigurasi perkakasan sistem. Langkah-langkah untuk menentukan keperluan memori termasuk menentukan saiz pangkalan data, menganggar bilangan pengguna aktif, memahami pertanyaan serentak, mempertimbangkan ciri yang didayakan, dan memeriksa konfigurasi perkakasan sistem.

See all articles