我曾经因为一个bug困扰了一段时间,后来在一个存储过程代码中发现了原因。该代码在表名中包含了一个旧数据库的名称,而当前数据库的名称已经不同了。因此,我想问:
有没有一种情况下,将数据库名称作为完整表名(数据库名称+模式名称+表名称)的一部分是合理的(前提是我们不接触其他数据库中的表),还是说这总是一个不好的做法?如何在SQL脚本中正确使用数据库名称,使代码对特定数据库保持中立性?
以下仅为示例代码:
CREATE PROCEDURE [dbo].[MyProc]
AS
BEGIN
DELETE FROM [MyDatabase].[dbo].[MyTable]
END