SQL Server从表中选择主键,其中键包含多个列

时间:2009-11-10 05:28:14

标签: sql sql-server-2005

我正在研究遗留数据库。我无法更改架构:(在几个表中,主键使用多个列。

在应用程序中,我将每行中的数据读入表中,然后用户更新数据,然后将数据写回表中。

目前,我将各种PK列连接起来,并将它们存储为一个唯一的ID,以便将数据放回表中。

现在我想知道是否有更有效的方法来做到这一点。来自mySQL背景我不知道SQL Server 2005可能有什么功能

SELECT PRIMARYKEY() as pk, ...  FROM table WHERE ... 

以上将选择数据库引擎用作给定记录的主键的密钥

我搜索过,找不到任何东西。它可能只是我挑剔但我不喜欢连接技巧。

DC

2 个答案:

答案 0 :(得分:1)

“目前我连接各种PK列,并将它们存储为我将数据放回表格时的唯一ID。” 你不能只将pk存储为目标表中的两列,并使用它来连接回源表上的两列吗?

连接给你带来什么好处?

答案 1 :(得分:1)

在SQL Server中,我确实没有相应的PRIMARYKEY()。您可以查阅系统目录视图以找出构成主键的列,但不能只是通过函数调用选择主键值。

我同意StarShip3000 - 你将PK值连接起来是什么?虽然我认为由多个列组成的复合主键不一定是一个非常好的主意,如果它是一个遗留系统并且你无法改变它,我就不会在读取时连接PK值,然后拥有在将数据写回时将它们再次分开。只是保持结构不变 - 通常不建议使用复合键,但确实支持它们,没问题。