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 显然不太喜欢的内容呢?
您需要添加 [] 来表示表 n 列名称的分隔。
EXEC sp_RENAME 'Booking.[Booking.BookingID]', 'BookingID'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |