SQL在建立约束时,给约束取得名字是干什么用?怎么用?约束名字存在哪里了?

 我来答
匿名用户
2013-06-08
展开全部

给约束取名字,   目的是将来你可以比较容易的删除掉.

否则你要自己去查询数据字典表.


例如下面的例子.

唯一约束的名字,  是  t_123,  那么当我不需要这个约束的时候

如果我知道名字, 那么可以直接去删除掉. 




-- 创建测试表.
CREATE TABLE test_123 (
  id   INT,
  value  VARCHAR(10)
);
GO

-- 创建 UNIQUE 约束.
ALTER TABLE test_123
  ADD CONSTRAINT t_123 UNIQUE (value);
GO

-- 删除  UNIQUE 约束.
ALTER TABLE [test_123] 
DROP CONSTRAINT [t_123];
GO


如果我不知道约束的名字, 那么我需要去查询数据字典表


SELECT
  tab.name AS [表名],
  idx.name AS [约束名称],
  col.name AS [约束列名]
FROM
  sys.indexes idx
    JOIN sys.index_columns idxCol 
      ON (idx.object_id = idxCol.object_id 
          AND idx.index_id = idxCol.index_id 
          AND idx.is_unique_constraint = 1)
    JOIN sys.tables tab
      ON (idx.object_id = tab.object_id)
    JOIN sys.columns col
      ON (idx.object_id = col.object_id
          AND idxCol.column_id = col.column_id);


查询到约束名称以后,  在删除掉这个约束.



以上 SQL 语句,   SQL  Server  2008 Express  下测试通过。

其他数据库, 由于 数据字典表不同, 因此语句也就不同了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式