2013-10-02 99 views
0

第二個ALTER TABLECHECK CONSTRAINT是否在IF (NOT) EXISTS中,以便該腳本可以重複執行?SQL檢查是否運行了「CHECK CONSTRAINT」?

IF NOT EXISTS (
    SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
    WHERE CONSTRAINT_NAME ='fk_RoleId' 
) 
BEGIN 
    ALTER TABLE [dbo].[webpages_UsersInRoles] WITH CHECK ADD CONSTRAINT [fk_RoleId] FOREIGN KEY([RoleId]) 
    REFERENCES [dbo].[webpages_Roles] ([RoleId]) 
END 
GO 

-- Put me in an IF ...() BEGIN ... END? 
ALTER TABLE [dbo].[webpages_UsersInRoles] CHECK CONSTRAINT [fk_RoleId] 
GO 

它不會引起任何錯誤,但如果它應該是在IF條款,你怎麼測試,如果它已經跑了(什麼可以如果包含)?

+0

第二步是多餘的。請參閱http://stackoverflow.com/questions/529941/whats-the-difference-between-with-check-add-constraint-followed-by-check-constr –

回答

1

如果你想有一個檢查(這不是必要的),sys.foreign_keys有一列is_not_trusted

FOREIGN KEY約束還沒有被系統驗證。