2009-05-15 28 views

Trả lời

65

Bạn có thể sử dụng kịch bản này:

IF EXISTS (SELECT * 
      FROM sys.foreign_keys 
      WHERE object_id = OBJECT_ID(N'[dbo].[FK_NAME]') 
      AND parent_object_id = OBJECT_ID(N'[dbo].[MyTable]')) 
BEGIN 
    -- do stuff 
END 

Điều này có thể được thực hiện nếu bạn mở rộng ra các bảng và nhấp chuột phải vào một FK hiện có và chọn chính kịch bản như "thả để" và sau đó bạn sẽ nhận được một tạo kịch bản từ SQL.

+0

Tập lệnh này hoạt động rất tốt! Tôi không thể tin rằng bạn có thể viết một cái gì đó như thế từ menu. Cảm ơn một loạt sự giúp đỡ. –

+5

Bạn có thể nhấp chuột phải vào bất kỳ thứ gì trong SQL và nó tạo ra một kịch bản cho bạn, Bảng, Thủ tục lưu trữ, Khóa ngoài và nhiều hơn nữa. Studio quản lý là bạn của bạn khi bạn tìm hiểu một số tính năng thú vị mà nó có thể thực hiện. – CodeLikeBeaker

+0

Phương pháp này chỉ hoạt động nếu tên mặc định của khóa ngoại được sử dụng. Không đáng tin cậy khi làm việc trên các tên dựa trên các giả định đặc biệt nếu bạn đang làm việc trên các cơ sở dữ liệu được tạo bởi những người khác có thể tuân theo một quy ước đặt tên khác. Có cách nào để kiểm tra xem một cột cụ thể có phải là Khóa ngoại trừ một bảng khác thay vì kiểm tra tên của Khóa ngoại không? –

7

Woo-hoo! Tôi vừa trải qua hai ngày làm việc này.

IF NOT EXISTS (SELECT name 
       FROM sys.foreign_keys 
       WHERE name = 'FK_Name') 
    ALTER TABLE table_name ADD CONSTRAINT FK_Name FOREIGN KEY (idcol) 
          REFERENCES OtherTable(idcol) 
Các vấn đề liên quan