Advertisement
Guest User

Untitled

a guest
Jul 31st, 2014
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.93 KB | None | 0 0
  1. IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'TableName') AND type = (N'U')) DROP TABLE TableName
  2. go
  3.  
  4. ALTER TABLE [dbo].[TableName]
  5. WITH CHECK ADD CONSTRAINT [FK_TableName_TableName2] FOREIGN KEY([FK_Name])
  6. REFERENCES [dbo].[TableName2] ([ID])
  7. go
  8.  
  9. IF EXISTS (SELECT *
  10. FROM sys.foreign_keys
  11. WHERE object_id = OBJECT_ID(N'dbo.FK_TableName_TableName2')
  12. AND parent_object_id = OBJECT_ID(N'dbo.TableName')
  13. )
  14. ALTER TABLE [dbo.TableName] DROP CONSTRAINT [FK_TableName_TableName2]
  15.  
  16. IF (OBJECT_ID('FK_ConstraintName', 'F') IS NOT NULL)
  17. BEGIN
  18. ALTER TABLE dbo.TableName DROP CONSTRAINT FK_ConstraintName
  19. END
  20.  
  21. C = CHECK constraint
  22. D = DEFAULT (constraint or stand-alone)
  23. F = FOREIGN KEY constraint
  24. PK = PRIMARY KEY constraint
  25. UQ = UNIQUE constraint
  26.  
  27. AF = Aggregate function (CLR)
  28. C = CHECK constraint
  29. D = DEFAULT (constraint or stand-alone)
  30. F = FOREIGN KEY constraint
  31. FN = SQL scalar function
  32. FS = Assembly (CLR) scalar-function
  33. FT = Assembly (CLR) table-valued function
  34. IF = SQL inline table-valued function
  35. IT = Internal table
  36. P = SQL Stored Procedure
  37. PC = Assembly (CLR) stored-procedure
  38. PG = Plan guide
  39. PK = PRIMARY KEY constraint
  40. R = Rule (old-style, stand-alone)
  41. RF = Replication-filter-procedure
  42. S = System base table
  43. SN = Synonym
  44. SO = Sequence object
  45.  
  46. SQ = Service queue
  47. TA = Assembly (CLR) DML trigger
  48. TF = SQL table-valued-function
  49. TR = SQL DML trigger
  50. TT = Table type
  51. U = Table (user-defined)
  52. UQ = UNIQUE constraint
  53. V = View
  54. X = Extended stored procedure
  55.  
  56. create function fnGetForeignKeyName
  57. (
  58. @ParentTableName nvarchar(255),
  59. @ParentColumnName nvarchar(255),
  60. @ReferencedTableName nvarchar(255),
  61. @ReferencedColumnName nvarchar(255)
  62. )
  63. returns nvarchar(255)
  64. as
  65. begin
  66. declare @name nvarchar(255)
  67.  
  68. select @name = fk.name from sys.foreign_key_columns fc
  69. join sys.columns pc on pc.column_id = parent_column_id and parent_object_id = pc.object_id
  70. join sys.columns rc on rc.column_id = referenced_column_id and referenced_object_id = rc.object_id
  71. join sys.objects po on po.object_id = pc.object_id
  72. join sys.objects ro on ro.object_id = rc.object_id
  73. join sys.foreign_keys fk on fk.object_id = fc.constraint_object_id
  74. where
  75. po.object_id = object_id(@ParentTableName) and
  76. ro.object_id = object_id(@ReferencedTableName) and
  77. pc.name = @ParentColumnName and
  78. rc.name = @ReferencedColumnName
  79.  
  80. return @name
  81. end
  82.  
  83. go
  84.  
  85. declare @name nvarchar(255)
  86. declare @sql nvarchar(4000)
  87. -- hunt for the constraint name on 'Badges.BadgeReasonTypeId' table refs the 'BadgeReasonTypes.Id'
  88. select @name = dbo.fnGetForeignKeyName('dbo.Badges', 'BadgeReasonTypeId', 'dbo.BadgeReasonTypes', 'Id')
  89. -- if we find it, the name will not be null
  90. if @name is not null
  91. begin
  92. set @sql = 'alter table Badges drop constraint ' + replace(@name,']', ']]')
  93. exec (@sql)
  94. end
  95.  
  96. ALTER TABLE [dbo].[TableName]
  97. DROP CONSTRAINT FK_TableName_TableName2
  98.  
  99. IF (OBJECT_ID('DF_Constraint') IS NOT NULL)
  100. BEGIN
  101. ALTER TABLE [dbo].[tableName]
  102. DROP CONSTRAINT DF_Constraint
  103. END
  104.  
  105. Declare @FKeyRemoveQuery NVarchar(max)
  106.  
  107. IF EXISTS(SELECT 1 FROM sys.foreign_keys WHERE parent_object_id = OBJECT_ID(N'dbo.TableName'))
  108.  
  109. BEGIN
  110. SELECT @FKeyRemoveQuery='ALTER TABLE dbo.TableName DROP CONSTRAINT [' + LTRIM(RTRIM([name])) + ']'
  111. FROM sys.foreign_keys
  112. WHERE parent_object_id = OBJECT_ID(N'dbo.TableName')
  113.  
  114. EXECUTE Sp_executesql @FKeyRemoveQuery
  115.  
  116. END
  117.  
  118. DECLARE @ConstraintName nvarchar(200)
  119. SELECT
  120. @ConstraintName = KCU.CONSTRAINT_NAME
  121. FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC
  122. INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU
  123. ON KCU.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG
  124. AND KCU.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
  125. AND KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
  126. WHERE
  127. KCU.TABLE_NAME = 'TABLE_NAME' AND
  128. KCU.COLUMN_NAME = 'TABLE_COLUMN_NAME'
  129. IF @ConstraintName IS NOT NULL EXEC('alter table TABLE_NAME drop CONSTRAINT ' + @ConstraintName)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement