有没有办法确定是否在会话中创建了特定的临时表而没有引用它创建的tempdb数据库?用户在登录时会分配给特定的tempdb,因此我不知道他们将使用哪个tempdb.
我不需要指定tempdb来从临时表中选择数据,所以我肯定可以看到表是否存在?
我的一个朋友问我是否知道为什么他不应该在SQL-Server 2000中的View中包含Temporal或变量表.我只能认为每次访问视图时都会创建一个新表,但我想知道的是还有其他问题.
谢谢,
编辑:这是不可能的
我有两个表,第一部分重构的结构,迭代第二个结构:
table1 (id, i, j, k, a, b, c, x, y, z) -- requests
table2 (id, a, b, c, d) -- essential elements / bank subjects
Run Code Online (Sandbox Code Playgroud)
我需要使用给定的ID 插入table1记录table2.这样做的最佳方法是什么?
我有两个想法:
1:
DECLARE @a type, @b type, @c type
SELECT @a = a, @b = b, @c = c, FROM table2 WHERE id = @id
INSERT INTO table1 (i, j, k, a, b, c, x, y, z)
VALUES (@i, @j, @k, @a, @b, @c, @x, @y, @z)
Run Code Online (Sandbox Code Playgroud)
2: …
这是SQL:
CREATE TABLE dbo.TmpFeesToRules1(Name varchar, LookupId int)
INSERT INTO dbo.TmpFeesToRules1(Name, LookupId)
SELECT DISTINCT Name, 0 FROM Lending.Fee
UNION SELECT DISTINCT Name, 0 FROM Lending.ApplicationFee
INSERT INTO dbo.tblLookup (LookupType, LookupCode, LookupDesc, EditFlag, DeletedFlag, DefaultFlag)
SELECT 'FEE_CODE', Name, Name, 0, 0, 0
FROM dbo.TmpFeesToRules1
UPDATE dbo.TmpFeesToRules1
SET
LookupId = L.LookupID
FROM
dbo.tblLookup L
INNER JOIN dbo.TmpFeesToRules1 T ON T.Name = L.LookupDesc
WHERE
L.LookupType = 'FEE_CODE'
CREATE TABLE dbo.TmpFeesToRules2(FeeId int, Name varchar)
INSERT INTO dbo.TmpFeesToRules2(FeeId, Name)
SELECT FeeId, Name FROM Lending.ApplicationFee
GO
UPDATE …Run Code Online (Sandbox Code Playgroud) 我正在浏览Martin Eve为 Android提供的Mendeley的源代码,看到通过使用 _id 在表上调用替换,临时表与主表一起创建。例如在 Collections 表上
db.execSQL(COLLECTIONS_CREATE.replace(" (_id", "_TEMP (_id"));
Run Code Online (Sandbox Code Playgroud)
我猜它会创建一个新的临时表。对此有更多解释会很棒。此外,数据首先插入临时表,然后移至主表。
我搜索了 SO 并遇到了 SQL 数据库系统中临时表的用例是什么?并看到临时表用于处理复杂的查询、排序和提高性能。谁能解释一下在这种情况下它是如何帮助的?
我正在尝试创建一个具有自动递增的关键字段的临时表.但我一直遇到语法错误.
这是我正在尝试的:
CREATE TEMPORARY TABLE
RETURN_ARTISTS
(KEY INT(11) NOT NULL AUTO_INCREMENT,
ARTIST_1_KEY INT(11),
ARTIST_2_KEY INT(11));
INSERT INTO RETURN_ARTISTS (1,1);
DELETE TABLE RETURN_ARTISTS;
Run Code Online (Sandbox Code Playgroud)
这是我一直得到的错误:
Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT(11) NOT NULL AUTO_INCREMENT,
ARTIST_1_KEY INT(11),
ARTIST_2_KEY INT(' at line 3
Run Code Online (Sandbox Code Playgroud) 我正在创建一个电子邮件队列来处理电子邮件发送 从该队列中,我正在记录X个记录,并根据记录的类型字段发送电子邮件.
为此,我在存储过程中声明了一个表.当记录X个记录时,我将在EmailQ表中设置记录的状态 进行处理.但是在发送X号记录之后,现在在声明的表中必须删除.
为此我可以使用Delete但是有TRUNCATE删除表中的所有记录.但声明的表未标识为表.
WHILE EXISTS ( SELECT * FROM emailQ WHERE Status != 3)
BEGIN
CREATE PROCEDURE [dbo].[SendMails]
DECLARE @Temp TABLE (......)
--Declare all the necessary variables
INSERT INTO @Temp SELECT TOP 10
WITH (UPDLOCK, HOLDLOCK)
--Update the email queue table status of selected set of records in to the @Temp
DECLARE dataSet CURSOR FORWARD_ONLY FOR (SELECT....... FROM @Temp)
OPEN dataSet
FETCH NEXT FROM dataSet INTO...
WHILE @@FETCH_STATUS = 0 …Run Code Online (Sandbox Code Playgroud) 有没有更好的方法在Azure SQL上删除临时表?
BEGIN TRY
DROP TABLE #customMap
END TRY
BEGIN CATCH
END CATCH
Run Code Online (Sandbox Code Playgroud)
也许不需要在 Azure SQL 上删除临时表,因为会话结束时表会被删除。
这个
if (OBJECT_ID('#candidates')) is not null
begin
drop table #candidates;
end;
Run Code Online (Sandbox Code Playgroud)
或这个
if (OBJECT_ID('tempdb..#candidates')) is not null
begin
drop table #candidates;
end;
Run Code Online (Sandbox Code Playgroud)
不起作用。
我正在尝试创建一个临时表SQL,但是有一个我无法识别的错误.
CREATE TEMPORARY TABLE Guest(ID INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
ticket_id NOT NULL VARCHAR(255),
event_id NOT NULL INT (11),
user_id NOT NULL INT (11),
fullname NOT NULL VARCHAR(255),
delivery NOT NULL VARCHAR(255),
ticket_type NOT NULL VARCHAR(255),
ticket_price NOT NULL DECIMAL(19,4),
fees NOT NULL DECIMAL(19,4),
total_price NOT NULL DECIMAL(19,4),
barcode NOT NULL VARCHAR(255),
purchase_time NOT NULL datatime,
person_pickup NOT NULL varchar(80),
Qty NOT NULL INT(11));
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
You have an error in your SQL syntax; check the manual that …Run Code Online (Sandbox Code Playgroud) 这可能是一个多部分问题:
当我发布声明时
IF OBJECT_ID('temp..#tablename) IS NOT NULL --drop the table here
Run Code Online (Sandbox Code Playgroud)
它不会删除临时表.当我去看临时数据库时,这个名字是完全不同的......
#tablename___________________________________________00000001069F
Run Code Online (Sandbox Code Playgroud)
显然,drop语句不适用于此.如何使用上述语句确保临时表被删除.
另外,如果我在create temp table语句之前使用"USE dbName",临时表是否仍然在tempdb或dbName数据库中创建?默认值是tempDb吗?
谢谢,RV.
temp-tables ×10
sql ×6
sql-server ×6
t-sql ×3
mysql ×2
android ×1
azure ×1
sqlite ×1
sybase ×1