Làm thế nào để thay đổi ràng buộc


90

SQL làm thế nào để thay đổi ràng buộc

Dưới đây là 1 trong những hạn chế của tôi

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

Tôi muốn thêm vào

ON DELETE CASCADE

đối với ràng buộc ở trên.

Làm cách nào để thay đổi ràng buộc hiện có đó ACTIVEPROG_FKEY1 và thêm

ON DELETE CASCADE

để ràng buộc ACTIVEPROG_FKEY1

Hãy xem xét ACTIVEPROG_FKEY1 có ở Bảng ACTIVEPROG

Câu trả lời:


142

Bạn không thể thay đổi các ràng buộc bao giờ nhưng bạn có thể bỏ chúng và sau đó tạo lại.

Hãy nhìn vào điều này

ALTER TABLE your_table DROP CONSTRAINT ACTIVEPROG_FKEY1;

và sau đó tạo lại nó với ON DELETE CASCADEnhư thế này

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

hy vọng điều này giúp đỡ


bạn có thể bật / tắt các ràng buộc.
Florin Ghita

1
@FlorinGhita, vâng, chúng tôi có thể bật / tắt ............... Đôi khi rất hữu ích nếu tắt một hoặc nhiều ràng buộc trên bảng, thực hiện một điều gì đó quan trọng và sau đó bật lại hằng số ) sau khi bạn hoàn thành. Điều này thường được thực hiện để cải thiện hiệu suất trong quá trình vận hành tải hàng loạt.
andy

12

Không. Chúng tôi không thể thay đổi ràng buộc, điều duy nhất chúng tôi có thể làm là thả và tạo lại nó

ALTER TABLE [TABLENAME] DROP CONSTRAINT [CONSTRAINTNAME]

Ràng buộc khóa nước ngoài

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

Ràng buộc khóa chính

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

6
Đúng là những gì OP muốn là không thể, nhưng tại sao bạn lại đăng một liên kết đến một trang web SQL Server cho một câu hỏi được gắn thẻ Oracle?
Frank Schmitt,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.