当前位置: 首页 > 面试题库 >

如何确定SQL Server中表的主键?

张博涛
2023-03-14
问题内容

我希望能够以某种方式在SQL Server
2005中执行的操作是以表名作为输入来确定组成主键的所有字段。sp_columns似乎没有这个领域。关于在哪里看有什么想法?


问题答案:

我在编写的代码生成器中使用它来获取主键:

SELECT i.name AS IndexName, 
    OBJECT_NAME(ic.OBJECT_ID) AS TableName, 
    COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName, 
    c.is_identity, c.user_type_id, CAST(c.max_length AS int) AS max_length, 
    CAST(c.precision AS int) AS precision, CAST(c.scale AS int) AS scale 
FROM sys.indexes AS i 
INNER JOIN sys.index_columns AS ic 
INNER JOIN sys.columns AS c ON ic.object_id = c.object_id AND ic.column_id = c.column_id 
    ON i.OBJECT_ID = ic.OBJECT_ID AND i.index_id = ic.index_id 
WHERE i.is_primary_key = 1 AND ic.OBJECT_ID = OBJECT_ID('dbo.YourTableNameHere')
ORDER BY OBJECT_NAME(ic.OBJECT_ID), ic.key_ordinal


 类似资料:
  • 问题内容: 我正在用PHP生成这样的SQL查询: 由于此查询的几乎每个部分都是动态的,因此我需要一种动态确定表的主键的方法,这样我就可以进行如下查询: 表的主键是否有MySQL关键字,或者有获取该关键字的方法? 我以前使用过information_schema数据库来查找这样的信息,但是如果我不必求助于此,那将是很好的。 问题答案: 您想要其中Key_name = PRIMARY的行 http:/

  • 问题内容: 我想使用TSQL确定表的主键(存储过程或系统表都可以)。SQL Server(2005或2008)中是否存在这种机制? 问题答案: 这应该使您开始:

  • 问题内容: 我有一张桌子,我需要在99%的时间内自动分配ID(其他1%似乎使用身份列来排除)。因此,我有一个存储过程来获取以下行中的下一个ID: `` 检查必须检查用户是否手动使用了ID并找到下一个未使用的ID。 当我依次调用它并返回1、2、3时,它可以正常工作。我需要做的是在多个进程同时调用此方法的情况下提供一些锁定。理想情况下,我只需要它专用于围绕此代码锁定last_auto_id表,以便第二

  • 我想将行插入到具有唯一的、非自动递增主键的表中。 是否有一个本机SQL函数来计算最后一个键并将其递增,还是必须分两步进行:

  • 问题内容: 使用: 我有一张桌子: 还有其他一些表(大约还有200个表),其中一些用作上的外键。 因此,我想找出-哪些表使用此外键()? 我正在使用访问我的sql-server 。 问题答案: 在SQL Server Management Studio中,可以在对象资源管理器中右键单击表,然后选择“查看依赖项”。这将打开一个新窗口,您可以在其中查看依赖于表以及表所依赖的所有其他对象(不仅仅是表)。

  • 问题内容: PostgreSQL提供了格式数据类型来存储日期。这些日期的问题是,据我所知,它们无法解释不确定性。 有时人们不知道某事的完整日期,但知道它发生在1995年1月或“ 1999或2000”中()。可能有以下几个原因: 人们不记得确切的日期; 确切的日期从根本上是未知的:例如,某人在某天最后一次被人看到,几天后被发现死亡。或者 我们处理未来的事件,因此仍然有可能出现问题。 我想知道是否存在