【发布时间】:2012-07-11 15:31:00
【问题描述】:
我正在尝试为我的所有表编写一个通用的“更新”函数。但是,每个主键的名称都不同。那么是否有可能,而不是使用主键列的名称,而是使用类似自动选择主键列的东西?
UPDATE .... WHERE PRIMARY KEY = 'id_number'
谢谢!
编辑:抱歉,我好像不太清楚,但我必须承认我真的不是专家。所以我的想法是,我希望它适用于所有只有一个 INT 类型主键列的表。如果可能的话,我希望避免进行两个查询(一个用于获取主键列的名称 + 查询本身)。起初,我想避免必须确保每个表的列名正确(mo_id、rc_id 等...)。
【问题讨论】:
-
您没有声明 RDBMS,但我对此表示怀疑。对于初学者来说,主键可以是复合的(多列)。
-
哪个 DBMS?这个信息很重要。尽量保持清晰。
-
我不认为它可以通过一个查询来完成。可能需要使用信息模式来实现这一点。遍历所有表名,找到PK并为每个表生成更新查询
-
您的表可能都有一个 INTEGER 主键,但您的表是否都具有相同的列?如果没有,每个表都有不同的 SET... 子句。通常每个表的更新过程都是特定于该表的。
-
你说你
want to avoid having to make sure [you] have the right name of the [primary key] column for each table。为主键开发命名约定(如 CUSTID,即 {tablename}id)是一种很好的做法,这样您在编写使用连接的查询时就不必继续查阅表定义。但是关于 SQL 的一件事——你必须检查你的列名。有些懒惰是好的,因为它们鼓励效率;但其他类型的懒惰,嗯,只是懒惰。 :-)
标签: sql primary-key