我目前正在使用SQL Server,我必须重命名一个表中的每一列。
对于表中的每一列,我做了这样的事情。
DB> sp_rename 'DB.TABLE.OldName', 'NewName'
每次都能成功
除了一列,我在其中运行了这个。
DB_configdwh_dev> sp_rename 'OCIDB.RAW_KPI_FORECASTS_DAILY.DEVRAWKPIFORDAI_promoted_at', 'RAWKPIFORDAI_promoted_at'
Time: 0.510s
Caution: Changing any part of an object name could break scripts and stored procedures.
虽然看起来很有效,但旧的名字仍然在表中。
DB_configdwh_dev> describe "OCIDB"."RAW_KPI_FORECASTS_DAILY"
Time: 4.165s (4 seconds)
+-------------------------+---------+------------+-------------------------+
| Name | Owner | Type | Created_datetime |
|-------------------------+---------+------------+-------------------------|
| RAW_KPI_FORECASTS_DAILY | dbo | user table | 2020-05-24 23:31:58.410 |
+-------------------------+---------+------------+-------------------------+
+-----------------------------+----------+------------+----------+--------+---------+------------+----------------------+------------------------+------------------------------+
| Column_name | Type | Computed | Length | Prec | Scale | Nullable | TrimTrailingBlanks | FixedLenNullInSource | Collation |
|-----------------------------+----------+------------+----------+--------+---------+------------+----------------------+------------------------+------------------------------|
...
| RAWKPIFORDAI_predicted_at | datetime | no | 8 | | | no | (n/a) | (n/a) | NULL |
| DEVRAWKPIFORDAI_promoted_at | datetime | no | 8 | | | yes | (n/a) | (n/a) | NULL |
+-----------------------------+----------+------------+----------+--------+---------+------------+----------------------+------------------------+------------------------------+
我可以确认这列没有被重命名过
DB_configdwh_dev> select top 1 rawkpifordai_promoted_at from ocidb.raw_kpi_forecasts_daily
Time: 0.356s
訊息207,第16層,狀態1,第1行 無效的列名 'rawkpifordai_promoted_at'.
DB_configdwh_dev> select top 1 devrawkpifordai_promoted_at from ocidb.raw_kpi_forecasts_daily
Time: 0.867s
+-------------------------------+
| devrawkpifordai_promoted_at |
|-------------------------------|
| 2020-05-18 00:00:00.000 |
+-------------------------------+
由于重命名命令没有导致错误,我在这里有点迷茫。我想过把旧的列复制到另一个正确名称的列中,然后删除前者。但我相信一定有更好的处理方法。我试过断开与DB的连接,然后再做同样的处理,但没有用。
非常感谢你的建议或任何建议。