SQL旧表仍然出现

时间:2017-03-17 10:03:32

标签: sql sql-server

这是一个非常奇怪的问题。我有一个动态SQL存储过程,它将数据插入查询数据库中的静态表。该表在查询中引用了很多。因此,当我需要更改此表并添加两个新列时,我将其删除并使用导入向导(Excel电子表格)创建一个新的并赋予它相同的名称,因此我没有必要修改SP 。 SP工作正常,但是我在动态SQL之外也有这个查询,当我运行它时,它现在失败了。

起初我无法解决原因,但当我看到INSERT INTO新创建的(但具有相同名称)表失败时,因为有太多列无法匹配表。我运行了一个简单的SELECT * FROM,它带回了旧表中的3列,而不是带有5列的新表?

如果该表被删除,该表如何仍然存在?它像幽灵桌一样仍然存在?

谢谢

2 个答案:

答案 0 :(得分:0)

首先检查您的临时表是否存在于数据库中.IF存在意味着删除临时表,然后创建新表。

 IF EXISTS(SELECT 1 FROM tempdb.dbo.sysobjects WHERE xtype in ('U') AND id = 
  object_id(N'tempdb..#your_tableName') )
  DROP TABLE #your_tableName;

答案 1 :(得分:0)

这是已知的视图行为,可以通过删除和重新创建视图来修复。不确定为什么它对表的行为方式相同。我能想到的可能性 -

  1. 这是一个观点
  2. 新表未在同一数据库中创建
  3. 尝试删除并重新创建sproc,以获得它的价值