【发布时间】:2011-12-12 23:22:33
【问题描述】:
我有一个暂存表,想将数据插入Main 表,所以我想在将数据从暂存表插入主表时检查,如果存在则更新记录,否则插入为新记录。这里的问题是暂存表和主表都没有任何键列,我可以根据这些键列比较值。
是否可以在两个表上都没有键列,即主键?如果是,请告诉我如何做。
提前致谢。
【问题讨论】:
-
您的意思是没有在这些表上创建主键,还是没有“逻辑”主键来识别每一行?
-
我建议您在所有表上都使用唯一标识符,以应对这种情况。没有它们,您将无法安全准确地进行检查。
-
如果没有可用于比较的列,您如何知道是否应该更新或插入?
-
@Anders UP 这是一个“物理”意义上的数据库表,它是一个在 DBMS 中称为表的对象。但在“逻辑”意义上,它不是一个关系表。 en.wikipedia.org/wiki/Table_%28database%29 - “每一行都由出现在已被标识为候选键的特定列子集中的值标识。”
-
@AndersUP:没有主键的表只是一堆(蒸汽)数据——不是我所说的真实表。 可能对于临时/中间/临时表是可以的,例如用于加载数据 - 但您永久存储的任何内容只需要一个主键......
标签: sql sql-server-2008