1

我正在尝试为我的所有表格编写一个通用的“更新”功能。但是,每个主键的名称都不同。那么是否有可能,而不是使用主键列的名称,而是使用类似自动选择主键列的东西?

UPDATE .... WHERE PRIMARY KEY = 'id_number'

谢谢!

编辑:对不起,我似乎不清楚,但我必须承认我真的不是专家。所以我的想法是,我希望它适用于所有只有一个 INT 类型主键列的表。如果可能的话,我希望避免进行两个查询(一个用于获取主键列的名称 + 查询本身)。起初,我想避免必须确保每个表都有正确的列名称(mo_id、rc_id 等...)。

4

1 回答 1

1

我要说的是,您不能为所有表创建通用更新功能。实际上它需要是一个存储过程,就像我想的那样,但那是另一回事。正如@Martin Smith 指出的那样,PK 可以是复合的。我的 PK 绑定了四个字段以使其独一无二。你怎么能解释呢?此外,PK 可以是多种不同的类型。你打算在这个通用存储过程中为所有这些代码编写代码吗?您的代码段假定 PK 是 char 类型。这看起来不太合理。我确实找到了一些代码来让您识别任何表的 PK,但是在那之后您还有很多工作要做,而且您的全部要求还不清楚。

从保管库(这适用于 SQL Server):

 SELECT KU.table_name as tablename,column_name as primarykeycolumn
 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
 INNER JOIN
 INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU
 ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND
 TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME
 and ku.table_name='yourTableName'
 ORDER BY KU.TABLE_NAME, KU.ORDINAL_POSITION;

SQL Server:使用 sql 查询获取表主键

于 2012-07-11T15:50:02.643 回答