Làm cách nào để xóa tất cả ràng buộc khóa ngoài trên bảng trong SQL Server 2000 bằng T-SQL?Làm cách nào để xóa tất cả các ràng buộc khóa ngoài trên một bảng trong Sql Server 2000?
Trả lời
Tôi nghĩ bạn sẽ thấy rằng không có cách nào dễ dàng để giảm các ràng buộc trên một bảng trong SQL Server 2000. Điều đó nói rằng, có rất nhiều người đã viết kịch bản có thể xác định và xóa/vô hiệu/tạo lại khóa ngoài ràng buộc. Một ví dụ là tại http://www.mssqltips.com/tip.asp?tip=1376 - nhưng tôi chưa thử nghiệm trên SQL Server 2000.
EDIT: Dưới đây là một số khác example tạo tập lệnh thả/tạo cho bạn.
Nếu chỉ đơn giản là vô hiệu hóa hạn chế là một lựa chọn ở đây, bạn có thể sử dụng:
ALTER TABLE myTable NOCHECK CONSTRAINT all
sau đó bạn có thể chuyển chúng trở lại chỉ đơn giản là sử dụng:
ALTER TABLE myTable WITH CHECK CHECK CONSTRAINT all
Nếu bạn muốn vô hiệu hóa ép trong tất cả các bảng bạn có thể sử dụng:
-- disable all constraints
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
-- enable all constraints
exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
Thêm câu hỏi: Can foreign key constraints be temporarily disabled using TSQL?
Nhưng nếu bạn cần thả vĩnh viễn các ràng buộc, bạn có thể sử dụng this script posted on databasejurnal.com.
Chỉ cần sửa đổi nó một chút để chỉ thả các phím nước ngoài
create proc sp_drop_fk_constraints
@tablename sysname
as
-- credit to: douglas bass
set nocount on
declare @constname sysname,
@cmd varchar(1024)
declare curs_constraints cursor for
select name
from sysobjects
where xtype in ('F')
and (status & 64) = 0
and parent_obj = object_id(@tablename)
open curs_constraints
fetch next from curs_constraints into @constname
while (@@fetch_status = 0)
begin
select @cmd = 'ALTER TABLE ' + @tablename + ' DROP CONSTRAINT ' + @constname
exec(@cmd)
fetch next from curs_constraints into @constname
end
close curs_constraints
deallocate curs_constraints
return 0
Ở đây bạn đi: (không kiểm tra trên SQL2000, nhưng nên ok)
Tạo 'vô hiệu hóa':
SELECT 'IF EXISTS (SELECT * FROM sys.foreign_keys
WHERE object_id = OBJECT_ID(N''[dbo].' + FK +''')
AND parent_object_id = OBJECT_ID(N''[dbo].' + PT + '''))
ALTER TABLE ' + PT + ' NOCHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
Tạo 'bật':
SELECT 'ALTER TABLE ' + PT + ' WITH CHECK CHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
Cập nhật: Rất tiếc, tôi nghĩ bạn muốn nó cho tất cả các bảng :) Bạn chỉ có thể sửa đổi ở trên cho bảng duy nhất của mình.
- 1. Xóa một hàng SQL bỏ qua tất cả các khóa và ràng buộc nước ngoài
- 2. MySQL: xóa một hàng bỏ qua ràng buộc khóa ngoài
- 3. Làm thế nào tôi có thể thả tất cả ràng buộc ràng buộc mặc định trên một bảng
- 4. Xóa dữ liệu bằng khóa ngoài trong bảng SQL Server
- 5. Thay đổi bảng để cung cấp ràng buộc khóa ngoài
- 6. MySQL: làm thế nào tôi có thể thấy tất cả các ràng buộc trên một bảng?
- 7. Ràng buộc khóa ngoài của MySQL, xóa tầng
- 8. Làm thế nào tôi có thể thả bảng nếu có ràng buộc khóa ngoài trong SQL Server?
- 9. SQL Server 2008- Nhận các ràng buộc bảng
- 10. Ràng buộc khó chịu trong SQL Server
- 11. Cách viết chỉ mục, khóa, khóa ngoài trong SQL Server
- 12. Kịch bản T-SQL để sao chép tất cả các ràng buộc bảng
- 13. Xóa khỏi nhiều bảng có ràng buộc nước ngoài
- 14. Làm cách nào để xóa bản ghi có ràng buộc khóa ngoài?
- 15. SQL Profiler (SQL Server 2000), làm cách nào để lọc các hoạt động của tôi?
- 16. Xóa tất cả các hàng trong bảng
- 17. Tạo ràng buộc khóa ngoài phức hợp
- 18. Ràng buộc kiểm tra khóa ngoài T-SQL
- 19. SQL Server 2005 Ràng buộc duy nhất trên hai cột
- 20. Có cách nào để lấy danh sách tất cả các bảng tạm thời hiện tại trong SQL Server không?
- 21. Tìm kiếm tất cả các bảng, tất cả các cột cho một giá trị cụ thể SQL Server
- 22. Oracle tất cả các tham chiếu khóa ngoài
- 23. Có cách nào để xóa các ràng buộc khỏi tất cả các phần tử bị ràng buộc trên một sự kiện đóng biểu mẫu không?
- 24. SQL cập nhật một bảng có khóa ngoài
- 25. SQL Server 2005 Làm thế nào để tạo một ràng buộc duy nhất?
- 26. 1: 1 Ràng buộc khóa ngoài
- 27. Có cách nào để có được các ràng buộc của một bảng trong SQLite không?
- 28. Làm thế nào để tìm tất cả các bảng có khóa ngoài tham chiếu bảng cụ thể.column và có giá trị cho các khóa nước ngoài?
- 29. Máy chủ SQL ROW_NUMBER() trên SQL Server 2000?
- 30. Đổi tên một ràng buộc trong SQL Server?
Các bảng hệ thống khác nhau nhưng được đặt tên tương tự trong SQL Server 2000: http://msdn.microsoft.com/en-us/library/aa260604%28v=SQL.80%29.aspx – Emyr