Kısıtlama Nasıl Değiştirilir


91

SQL Kısıtlama Nasıl Değiştirilir

Aşağıda benim kısıtlamalarımdan biri var

CONSTRAINT ACTIVEPROG_FKEY1 FOREIGN KEY(ActiveProgCode) REFERENCES PROGRAM(ActiveProgCode),

Eklemek istiyorum

ON DELETE CASCADE

yukarıdaki kısıtlamaya.

Mevcut ACTIVEPROG_FKEY1 kısıtlamasını nasıl değiştiririm ve

ON DELETE CASCADE

ACTIVEPROG_FKEY1'i kısıtlamak için

ACTIVEPROG_FKEY1'in ACTIVEPROG tablosunda olduğunu düşünün

Yanıtlar:


147

Kısıtlamaları asla değiştiremezsiniz, ancak onları kaldırıp yeniden yaratabilirsiniz.

Şuna bak

ALTER TABLE your_table DROP CONSTRAINT ACTIVEPROG_FKEY1;

ve sonra bunun ON DELETE CASCADEgibi yeniden yaratın

ALTER TABLE your_table
add CONSTRAINT ACTIVEPROG_FKEY1 FOREIGN KEY(ActiveProgCode) REFERENCES PROGRAM(ActiveProgCode)
    ON DELETE CASCADE;

umarım bu yardım eder


kısıtlamaları etkinleştirebilir / devre dışı bırakabilirsiniz.
Florin Ghita

1
@FlorinGhita, evet etkinleştirebilir / devre dışı bırakabiliriz ............... Bazen bir tablodaki bir veya daha fazla kısıtlamayı devre dışı bırakmak, önemli bir şey yapmak ve ardından sabitleri yeniden etkinleştirmek yararlıdır. ) bitirdikten sonra. Bu, çoğunlukla toplu yükleme işlemi sırasında performansı artırmak için yapılır.
andy

12

Hayır. Kısıtlamayı değiştiremeyiz, yapabileceğimiz tek şey onu düşürmek ve yeniden yaratmaktır.

ALTER TABLE [TABLENAME] DROP CONSTRAINT [CONSTRAINTNAME]

Yabancı Anahtar Kısıtlaması

Alter Table Table1 Add Constraint [CONSTRAINTNAME] Foreign Key (Column) References Table2 (Column) On Update Cascade On Delete Cascade

Birincil Anahtar kısıtlaması

Alter Table Table add constraint [Primary Key] Primary key(Column1,Column2,.....)

6
OP'nin istediği şeyin mümkün olmadığı doğru, ancak Oracle etiketli bir soru için neden bir SQL Server sitesine bağlantı gönderiyorsunuz?
Frank Schmitt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.