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

时间:2015-12-17 09:48:55

标签: sql sql-server sql-server-2008

我设法将SQL中的列重命名为表名和目标列名,并用点分隔。我用这句话:

EXEC sp_rename 'Booking.MasterBookingID', 'Booking.BookingID'

这很有效,问题是它本应该是:

EXEC sp_rename 'Booking.MasterBookingID', 'BookingID'

因此,我的不是名为BookingID,而是名为Booking.BookingID。所以我想,好吧,我只需要重新命名它。我走了:

EXEC sp_rename 'Booking.Booking.BookingID', 'BookingID'

但这不起作用:

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

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

EXEC sp_RENAME 'Booking.BookingID', 'BookingID' 

与以前相同的错误。

EXEC sp_RENAME 'Booking.BookingID', 'BookingID', 'COLUMN'
EXEC sp_RENAME 'Booking.Booking.BookingID', 'BookingID', 'COLUMN'

都会出错:

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

那么,既然我已经失误了,那么我怎样才能成功重命名我的专栏,并将其重命名为SQL显然不太喜欢的内容?

1 个答案:

答案 0 :(得分:3)

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

EXEC sp_RENAME 'Booking.[Booking.BookingID]', 'BookingID'
相关问题