我有一个创建临时表的客户端应用程序,在临时表中执行批量插入,然后在删除之前使用该表执行一些SQL.
伪代码:
open connection
begin transaction
CREATE TABLE #Temp ([Id] int NOT NULL)
bulk insert 500 rows into #Temp
UPDATE [OtherTable] SET [Status]=0 WHERE [Id] IN (SELECT [Id] FROM #Temp) AND [Group]=1
DELETE FROM #Temp WHERE [Id] IN (SELECT [Id] FROM [OtherTable] WHERE [Group]=1)
INSERT INTO [OtherTable] ([Group], [Id]) SELECT 1 as [Group], [DocIden] FROM #Temp
DROP TABLE #Temp
COMMIT TRANSACTION
CLOSE CONNECTION
Run Code Online (Sandbox Code Playgroud)
这在DROP语句上出错时失败:
无法删除表'#Temp',因为它不存在或您没有权限.
我无法想象如果没有其他事情首先发生这种失败是如何发生的,但在此之前我没有看到任何其他失败.
我有什么遗失可能会导致这种情况发生吗?
我正在尝试将嵌套的集模型示例应用于过程。我已经发现许多使用此技术的人,在此过程中我发现了一个问题。每次我调用程序时,都会得到提示unknown table XXX。创建过程时,我一点都没有问题。快速示例:
CREATE PROCEDURE `sp_getRoleTree` (IN root INT)
READS SQL DATA
BEGIN
DECLARE rows SMALLINT DEFAULT 0;
DROP TABLE IF EXISTS ROLE_TREE;
CREATE TABLE ROLE_TREE (
nodeID INT PRIMARY KEY
) ENGINE=HEAP;
INSERT INTO ROLE_TREE VALUES (root);
SELECT * FROM ROLE_TREE;
DROP TABLE ROLE_TREE;
END;
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,我在这里做错了吗(它是示例代码),如果代码还可以,我是否可以禁用if是否存在警告?在引起此类警告的过程中是否存在特殊的循环?
什么是确定列及其名称是否存在默认约束的方法,以及任何索引的名称,以便在删除列之前删除它们?
我只是想删除表'what'如果它存在,然后在可能的情况下在单个查询中重新创建表'what'.
DROP TABLE IF EXISTS `whatever` ELSE
CREATE TABLE `whatever`
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
如何在发布以及订阅中删除复制的表?(仅脚本)
我不想仅将其从复制中删除,因为这样,表的未复制副本将保留在订阅中。我希望删除表的所有实例。
所以我想要一个脚本,用于从发布者中删除表,并从发布中删除表,并且还将表删除到发布者和所有订阅者中。理想情况下,它将采用表名称的参数。
当我尝试执行代码时,我得到mysql错误1305:
DROP FUNCTION IF EXISTS myFunction;
Run Code Online (Sandbox Code Playgroud)
它只在函数不存在时失败.但为什么?在重新创建函数之前,这不是清理步骤吗?
这是我试图执行的查询:
DROP INDEX id_index on table;
过去我已经能够快速删除索引,但是在我放弃之前,这个查询运行了将近一个小时。什么可能导致这种缓慢的速度?
运行以下查询会导致客户端数据库中的所有约束.然而,在结果集几行似乎并不具有父,即parent_object_id = 0和OBJECT_NAME(parent_object_id)回报NULL.
SELECT name, type_desc, OBJECT_NAME(parent_object_id), parent_object_id
FROM sys.objects
WHERE is_ms_shipped = 0
AND type_desc LIKE '%_CONSTRAINT'
Run Code Online (Sandbox Code Playgroud)
这是否意味着数据库中存在孤立约束?如果是这样,我该如何删除它们?
根据他们的名字,我可以看到他们是在结构发生大量变化之前的残羹剩饭.
有一个表满,包含数据.是否可以将字段从[not null]更改为[null]而不删除并重新创建它?SQL写道必须删除并重新创建表.:)
如何使用查询从PostgreSQL中删除所有用户定义的视图?就像我们可以使用查询删除所有函数:
SELECT 'DROP FUNCTION ' || ns.nspname || '.' || proname
|| '(' || oidvectortypes(proargtypes) || ');'
FROM pg_proc INNER JOIN pg_namespace ns ON (pg_proc.pronamespace = ns.oid)
WHERE ns.nspname = 'my_messed_up_schema' order by proname;
Run Code Online (Sandbox Code Playgroud) sql-drop ×10
mysql ×4
sql-server ×4
indexing ×2
constraints ×1
create-table ×1
dynamic-sql ×1
performance ×1
postgresql ×1
procedure ×1
replication ×1
t-sql ×1
temp-tables ×1
view ×1