小弟最近在做一个项目,想实现对数据库中表对象的复制。举例来讲
数据库中有表A,字段a varchar(40),字段b decimal(13,3),等等还有很多其它的类型列吧。
我的想法是:
1>根据查找相关系统表,首先得到数据库中表对象的清单,
2>找到每张表对应的字段列清单
3>找到表中约束的清单,主要是主键约束。
这样的三个过程实现自动创建表的副本。前两个已经可以做到,但是到第三步,找约束清单,这个我遇到点问题。我是查找系统视图sys.key_constraints,但这个视图并没有告诉我,该约束对应的关键字段列,所以,就不能完整的创建该约束。请问各位前辈,有没有了解这个的,告诉我如何才能找出该约束对应的字段?
另外,针对我的这种复制表的做法,是否还有什么别的好办法,希望大家提点下小弟!先谢谢大家!

解决方案 »

  1.   

    主键约束select s.name as TABLE_SCHEMA, t.name as TABLE_NAME, k.name as CONSTRAINT_NAME, c.name as COLUMN_NAME, ic.key_ordinal AS ORDINAL_POSITION
      from sys.key_constraints as k
      join sys.tables as t
        on t.object_id = k.parent_object_id
      join sys.schemas as s
        on s.schema_id = t.schema_id
      join sys.index_columns as ic
        on ic.object_id = t.object_id
       and ic.index_id = k.unique_index_id
      join sys.columns as c
        on c.object_id = t.object_id
       and c.column_id = ic.column_id
     where k.type = 'PK'