Zmień nazwę kolumny SQL Server 2008
Używam SQL Server 2008 i Navicat. Muszę zmienić nazwę kolumny w tabeli za pomocą SQL.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
To stwierdzenie nie działa.
12 answers
Użyj sp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
Patrz: SQL SERVER - Jak zmienić nazwę kolumny lub nazwy tabeli
Dokumentacja: sp_rename (Transact-SQL)
W Twoim przypadku byłoby to:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
Pamiętaj, aby używać pojedynczych cudzysłowów do załączania wartości.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-29 06:57:17
Alternatywnie do SQL
, można to zrobić w Microsoft SQL Server Management Studio. Oto kilka szybkich sposobów korzystania z GUI:
First Way
Powolne podwójne kliknięcie na kolumnie. Nazwa kolumny stanie się edytowalnym polem tekstowym.
Second Way
Kliknij prawym przyciskiem myszy na kolumnie i wybierz Zmień nazwę z menu kontekstowego.
Na przykład:
Third Way
ten sposób jest korzystniejszy, gdy trzeba zmienić nazwę wielu kolumn w raz.
- kliknij prawym przyciskiem myszy tabelę zawierającą kolumnę, która wymaga zmiany nazwy.
- Kliknij Projekt .
- w panelu Projekt tabeli Kliknij i edytuj pole tekstowe nazwy kolumny, którą chcesz zmienić.
Na przykład:
Uwaga: wiem, że OP specjalnie poprosił o rozwiązanie SQL, myślałem, że może to pomóc innym :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55
Try:
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-30 09:39:08
Należy również podać schemat tabeli, w przeciwnym razie może pojawić się błąd:
Msg 15248, Level 11, State 1, Procedure sp_rename, Line 238 parametr @objname jest niejednoznaczny lub deklarowana @ objtype (kolumna) jest źle.
Jeśli jest to skrypt wdrożeniowy, polecam dodać do niego dodatkowe zabezpieczenia.
IF EXISTS (
SELECT 1
FROM sys.columns
WHERE
name = 'OldColumnName' AND
object_name(object_id) = 'TableName'
) AND
NOT EXISTS (
SELECT 1
FROM sys.columns
WHERE
name = 'NewColumnName' AND
object_name(object_id) = 'TableName'
)
EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-28 03:06:40
Dobrym pomysłem byłoby użycie już wbudowanej funkcji, ale innym sposobem jest:
- Utwórz nową kolumnę o tym samym typie danych i nowej nazwie.
- Uruchom instrukcję UPDATE/INSERT, aby skopiować wszystkie dane do nowej kolumny.
- Rzuć starą kolumnę.
Zaletą korzystania z sp_rename
jest to, że dba o wszystkie relacje z nim związane.
Sp_rename zmienia nazwę powiązanego indeksu za każdym razem, gdy zmieniono nazwę klucza głównego lub ograniczenia unikalnego. Jeśli zmieniony indeks jest powiązany z ograniczeniem klucza głównego, to ograniczenie klucza głównego jest również automatycznie zmieniane przez sp_rename. sp_rename może być użyte do zmiany nazw podstawowych i drugorzędnych indeksów XML.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-30 11:27:37
Możesz użyć sp_rename
aby zmienić nazwę kolumny.
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
Pierwszy parametr to obiekt do modyfikacji, drugi parametr to nowa nazwa, która zostanie nadana obiektowi, a trzeci parametr kolumna informuje serwer, że zmiana nazwy jest dla column
i może być również użyty do zmiany nazwy tables
, index
i alias data type
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 13:22:27
Ponieważ często tu przychodzę i zastanawiam się, jak używać nawiasów, ta odpowiedź może być przydatna dla takich jak ja.
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN';
-
OldColumnName
nie może być w[]
. To nie zadziała. - nie umieszczaj
NewColumnName
w[]
, to spowoduje[[NewColumnName]]
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-25 07:00:10
SQL Server management studio posiada pewne systemowe zdefiniowane procedury składowane (SP)
Jeden z nich służy do zmiany nazwy kolumny.SP to sp_rename
składnia: sp_rename " [table_name].old_column_name', 'new_column_name'
Aby uzyskać dalszą pomoc, zapoznaj się z tym artykułem: sp_rename by Microsoft Docs
Uwaga: podczas wykonywania tego SP serwer sql wyświetli komunikat ostrzegawczy jako ' Uwaga: Zmiana dowolnej części obiektu name could break scripts and stored procedures'.Jest to krytyczne tylko wtedy, gdy napisałeś własne sp, które obejmuje kolumnę w tabeli, którą zamierzasz zmienić.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-08 13:28:41
Ulepszona wersja @ Taher
DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)
SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName
IF EXISTS
(
SELECT 1 FROM sys.columns WHERE name = @OldColumnName AND OBJECT_NAME(object_id) = @TableName
)
AND NOT EXISTS
(
SELECT 1 FROM sys.columns WHERE name = @NewColumnName AND OBJECT_NAME(object_id) = @TableName
)
BEGIN
EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-10 07:35:14
W moim przypadku używałem MySQL WorkBench i
ALTER TABLE table_name RENAME COLUMN old_name new_name varchar(50) not null;
// without TO and specify data type of that column
Wystarczyło zmienić nazwę kolumny!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-22 16:06:17
LUB możesz po prostu powoli kliknąć dwukrotnie kolumnę w SQL Management Studio I zmienić jej nazwę za pomocą interfejsu użytkownika...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 18:10:51
Uruchom Zapytanie:
SP_RENAME '[TableName].[ColumnName]','NewNameForColumn'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-31 05:47:15