Database, Ümumi

Eyni anda bir neçə constrainti disable və enable etmək.

Salam Dostlar, bu yaxınlarda bir neçə cədvəldə olan bütün constraintləri disable və enablE etməm lazım idi.
Nümumə olaraq bir cədvəl və constraint yaradaq.

CREATE TABLE products
(
   id      NUMBER NOT NULL,
   name    VARCHAR2 (200),
   cdate   DATE,
   price   NUMBER,
   CONSTRAINT products_price_ck CHECK (price > 0),
   CONSTRAINT products_name_ck CHECK (length(name)> 10),
   CONSTRAINT products_id_pk PRIMARY KEY (id) 
);

Artıq yeni yaratdığımız cədvəl üçün products_price_ck adında constraint vardır.
Constraintimizin varlığını user_constraints data dictionarydən yoxlaya bilərik.
Hər hansı bir constrainti disable və ya enable etmək üçün aşağıdakı formada alter əmrindən istifadə edirik.

ALTER TABLE products DISABLE CONSTRAINT products_price_ck;


ALTER TABLE products ENABLE CONSTRAINT products_price_ck;

Yuxarıda da qeyd etdiyim kimi mənim disable etməli olduğum constraint sayı çox idi və bunun üçün hər dəfə alter əmrini təkrar-təkrar istifadə etmək lazım olacaqdı. Bunun əvəzinə aşağıdakı kimi PL/SQL kodu köməyimə çatdı.

BEGIN
   FOR item IN (SELECT CONSTRAINT_NAME, OWNER, TABLE_NAME
                  FROM user_constraints
                 WHERE table_name LIKE '%PRODUCTS%')
   LOOP
      DBMS_UTILITY.exec_ddl_statement (
            'ALTER TABLE "'
         || item.owner
         || '"."'
         || item.table_name
         || '" DISABLE CONSTRAINT '
         || item.constraint_name);
   END LOOP;
END;
Həmçinin Oxu:  SQL ilə Epoch&Unix Timestamp-ı Tarix formatına çevirmək

Bir cavab yazın

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir