我重命名了我的列以包含表名。为什么我不能重命名它了?

Kje*_*din 1 sql sql-server sql-server-2008

我设法将 SQL 中的列重命名为表名和预期的列名,用点分隔。我用了这个语句:

EXEC sp_rename 'Booking.MasterBookingID', 'Booking.BookingID'
Run Code Online (Sandbox Code Playgroud)

这行得通,但问题是,它应该是:

EXEC sp_rename 'Booking.MasterBookingID', 'BookingID'
Run Code Online (Sandbox Code Playgroud)

所以我的专栏不是被命名BookingID,而是现在被命名Booking.BookingID。所以我想,好吧,我只需要再次重命名它。我去:

EXEC sp_rename 'Booking.Booking.BookingID', 'BookingID'
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

> No item by the name of 'Booking.Booking.BookingID' could be found in
> the current database 'BookingSystemTest', given that @itemtype was
> input as '(null)'.
Run Code Online (Sandbox Code Playgroud)

所以我尝试了其他几种方法:

EXEC sp_RENAME 'Booking.BookingID', 'BookingID' 
Run Code Online (Sandbox Code Playgroud)

和以前一样的错误。

EXEC sp_RENAME 'Booking.BookingID', 'BookingID', 'COLUMN'
EXEC sp_RENAME 'Booking.Booking.BookingID', 'BookingID', 'COLUMN'
Run Code Online (Sandbox Code Playgroud)

两者都给出错误:

> [Error Code: 15248, SQL State: S1000]  Either the parameter @objname
> is ambiguous or the claimed @objtype (COLUMN) is wrong.
Run Code Online (Sandbox Code Playgroud)

那么,既然我犯了大错,我该如何成功地重命名我的列,并将其重命名为 SQL 显然不太喜欢的内容呢?

Abd*_*yed 6

您需要添加 [] 来表示表 n 列名称的分隔。

EXEC sp_RENAME 'Booking.[Booking.BookingID]', 'BookingID'
Run Code Online (Sandbox Code Playgroud)