在 SQL Server 中,有多种方法来检索特定表的主键。让我们探索一下它们:
方法 1:
此查询使用 OBJECTPROPERTY 函数选择指定为主键的列名称:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + QUOTENAME(CONSTRAINT_NAME)), 'IsPrimaryKey') = 1 AND TABLE_NAME = 'TableName' AND TABLE_SCHEMA = 'Schema'
方法2:
或者,您可以使用名为 sys.primary_keys 的系统函数来检索主键信息:
SELECT name, primary_key_id, object_id FROM sys.primary_keys WHERE object_id = OBJECT_ID('TableName') ORDER BY primary_key_id;
与 MySQL 查询的比较:
请注意,提供的 MySQL 查询与 SQL Server 方法略有不同。在 SQL Server 中,不能使用 SHOW KEYS 语句显式指示特定的 Key_name。相反,您需要使用 OBJECTPROPERTY 指定主键约束的 CONSTRAINT_NAME。
MySQL 和 SQL Server 的理想查询:
不幸的是,没有直接的 SQL查询可无缝适用于 MySQL 和 SQL Server 来检索主键。但是,您可以使用动态查询根据数据库类型查询不同的系统表,如下所示:
-- Check the database type IF @@SERVERNAME LIKE '%MySQL%' BEGIN SET @sqlQuery = 'SHOW KEYS FROM tablename WHERE Key_name = ''PRIMARY'''; END ELSE BEGIN SET @sqlQuery = 'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + ''.' + QUOTENAME(CONSTRAINT_NAME)), ''IsPrimaryKey'') = 1 AND TABLE_NAME = ''TableName'' AND TABLE_SCHEMA = ''Schema'''; END EXEC sp_executesql @sqlQuery;
以上是如何在 SQL Server 中检索表的主键?的详细内容。更多信息请关注PHP中文网其他相关文章!