【发布时间】:2021-12-08 13:24:32
【问题描述】:
我的老板给我分配了一个 SQL 任务,由于我是 SQL 新手,我不知道从哪里开始。
任务:创建一个Customer 表以保存写入PopulateCustomers 存储过程中#Customer 临时表中的数据。该表还需要有一个唯一的 ID,以确保填充功能的多个实例可以同时运行。
我知道如何在 SQL 中创建表,我猜我可以查看 PopulateCustomer 存储过程以了解将在临时表 Customer 中写入哪些数据,以便为 Customer 创建列表。
但我真正苦苦思索的是数据库表的唯一 ID 的概念。我立即想到了表中每一行的主键。我的老板回答没有,我不想要求更多,以免被视为新手。
我自己尝试过用谷歌搜索,但我一直想出的是告诉我有关标识符与主键的页面。但是没有什么能告诉我一个表有自己的唯一 ID,除非它引用表中的行,每个行都有一个标识符或主键。这让我认为我没有为这个功能寻找正确的关键词。
我找到的最接近的东西就在这里。 http://sqlservercodebook.blogspot.com/2008/03/check-if-temporary-table-exists.html
在我看来,这个查询就像是在创建一个带有 id 的临时表。
CREATE TABLE #temp(id INT)
我没有粘贴任何工作查询,因为我真的很想研究自己并弄清楚这一点。我只是想确保我正在寻找正确的方向,我需要搜索什么术语以了解如何创建具有唯一 ID 的表。或者也许我误解了任务并且没有这样的事情。
【问题讨论】:
-
听起来他们在谈论表本身的唯一实例?在这种情况下,您无需担心。存储过程的多次执行可以并行发生,并且它们各自获得自己的 #Customers 临时表副本
-
说真的,试图假装你知道你在做什么——实际上你不知道——对你的老板自找麻烦。与他们进行对话,并弄清楚他们想要什么以及您需要学习哪些技能才能做到这一点。要求我们尝试澄清你老板的指示是疯狂的,而且很容易导致你做一些完全错误的事情。
-
引用“the”临时表有点令人困惑,因为每个服务器进程都有自己的副本,因此无需担心“并发”,听起来有些交叉线需要解决。
-
感谢马丁·史密斯。所以创建一个普通的表就足够了。
-
是的 Dale K,这是有风险的,但我想尝试确定是否可以为表创建唯一 ID。
标签: sql-server database stored-procedures temp-tables