Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để có thể tạm thời vô hiệu hóa các ràng buộc khóa ngoại bằng T-SQL?

Nếu bạn muốn vô hiệu hóa tất cả các ràng buộc trong cơ sở dữ liệu, chỉ cần chạy mã này:

-- disable all constraints
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

Để bật lại chúng, hãy chạy:(tất nhiên, bản in là tùy chọn và nó chỉ liệt kê các bảng)

-- enable all constraints
exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Tôi thấy nó hữu ích khi điền dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác. Đó là cách tiếp cận tốt hơn nhiều so với việc loại bỏ các ràng buộc. Như bạn đã đề cập, nó có ích khi loại bỏ tất cả dữ liệu trong cơ sở dữ liệu và lưu trữ lại nó (giả sử trong môi trường thử nghiệm).

Nếu bạn đang xóa tất cả dữ liệu, bạn có thể thấy giải pháp này hữu ích.

Ngoài ra, đôi khi cũng rất hữu ích khi tắt tất cả các trình kích hoạt, bạn có thể xem giải pháp hoàn chỉnh tại đây.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao UDF lại chậm hơn nhiều so với truy vấn con?

  2. Hiển thị các tùy chọn cấu hình máy chủ nâng cao trong SQL Server (T-SQL)

  3. Luồng có điều kiện của máy chủ SQL

  4. Cấp quyền chọn trên dạng xem không phải bảng cơ sở khi bảng cơ sở nằm trong một cơ sở dữ liệu khác

  5. Hiệu suất máy chủ SQL TOP truy vấn CPU -2