[英]Unable to get table column constraint in T-SQL
我必須創建一個 T-SQL 腳本來更新列數據類型,但默認約束不允許這樣做,所以我必須首先刪除約束然后更改列。
我試圖通過表列約束,但它不起作用。
SELECT
obj_table.NAME AS 'table',
columns.NAME AS 'column',
obj_Constraint.NAME AS 'constraint',
obj_Constraint.type AS 'type'
FROM
sys.objects obj_table
JOIN
sys.objects obj_Constraint ON obj_table.object_id = obj_Constraint.parent_object_id
JOIN
sys.sysconstraints constraints ON constraints.constid = obj_Constraint.object_id
JOIN
sys.columns columns ON columns.object_id = obj_table.object_id
AND columns.column_id = constraints.colid
AND columns.NAME = 'trans_reject_id'
WHERE
obj_table.NAME = 'abc_transaction_table'
ORDER BY
'table'
ALTER TABLE abc_transaction_table
DROP CONSTRAINT DF__abc_trans__ach_r__575DE8F7
任何幫助,將不勝感激。
嘗試這樣的事情
SELECT dc.name constraint_name,
schema_name(dc.schema_id) schema_name,
object_name(dc.parent_object_id) table_name,
c.name column_name
FROM sys.default_constraints dc
join sys.columns c
on dc.parent_column_id = c.column_id
and dc.parent_object_id = c.object_id
要更改列約束,您需要以這種方式編寫查詢:
DECLARE @CONSTRAINT AS VARCHAR(255)
SET @CONSTRAINT = (SELECT obj_Constraint.NAME AS 'constraint'
FROM sys.objects obj_table
JOIN sys.objects obj_Constraint
ON obj_table.object_id = obj_Constraint.parent_object_id
JOIN sys.sysconstraints constraints
ON constraints.constid = obj_Constraint.object_id
JOIN sys.columns columns
ON columns.object_id = obj_table.object_id
AND columns.column_id = constraints.colid
WHERE obj_table.NAME='abc_transaction_table'
AND columns.Name = 'trans_reject_id'
)
DECLARE @REMOVE_CONSTARINT VARCHAR(255)
SET @REMOVE_CONSTARINT = 'ALTER TABLE abc_transaction_table DROP CONSTRAINT' + @CONSTRAINT
EXEC(@REMOVE_CONSTARINT)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.