我正在尝试为所有表格编写一个通用的“更新”功能。但是,主键的名称对于每个主键的名称都不同。那么,有可能使用类似于自动选择主键列的内容而不是使用主键列的名称吗?
UPDATE .... WHERE PRIMARY KEY = 'id_number'
谢谢!
编辑:对不起,我似乎不清楚,但我必须承认我真的不是专家。所以我的想法是,我希望它能够处理所有只有一个INT类型主键列的表。我希望尽可能避免发出两个查询(一个用于获取主键列的名称+查询本身)。起初,我想避免必须确保每个表都有正确的列名(mo_id,rc_id等...)。
答案 0 :(得分:1)
我要说你不能为你的所有表制作一般更新功能。实际上它需要是一个存储过程,就像我想的那样,但那是另一回事。正如@Martin Smith指出的那样,PK可以是复合材料。我有PK已经有四个字段绑定,使其独特。你怎么能解释这个?而且,PK可以是许多不同类型。你打算在这个通用的sproc中为所有这些代码编写代码吗?你的代码片段假定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;