我已经研究了在SQLServer 2016中删除数据库项时如何测试表或约束的存在,并了解到可以使用'if exist‘语法。但我还没有弄清楚如何删除一个表的约束,然后删除表本身,在没有脚本错误的情况下,表本身可能存在也可能不存在。-- DropTABLE1
alter tableTABLE1 drop constraint if exists F_
在一些恶化之后,当一个函数调用另一个函数时,我发现(IMO)奇怪的行为。如果外部函数创建了一个临时表,而内部函数创建了一个同名的临时表,则内部函数“获胜”。这是故意的吗?顺便说一句,我精通SQLServer,临时表不是这样的。临时表(#temp或@temp)的作用域是函数。因此,等效函数(SQLServer存储过程)将返回"7890“,而不是”1234“。drop function if exists inner_function();
drop<
我得到了一个非常复杂的SQL,最终迫使我使用临时表来工作。EXISTS(SELECT * FROM sys.tables WHERE SCHEMA_NAME(schema_id) LIKE 'dbo' AND name like '#MYTEMPTABLE')SELECT * FROM #MYTEMPTABLE WHERE [conditions]