2011-07-30 10 views
6

Mam tabelę i chcę upuścić lub ustawić domyślną wartość jednej z kolumn. Używam poniżej skryptów:Pomoc w rozwiązywaniu domyślnej wartości kolumny z kroplą błędu tabeli

ALTER TABLE AccAccountGroup ALTER COLUMN Name DROP DEFAULT 

ALTER TABLE AccAccountGroup ALTER COLUMN Name SET DEFAULT 'default value' 

podczas uruchamiania skryptów, poniżej błędów wydaje:

Incorrect syntax near the keyword 'DEFAULT'. => dla skryptu rozwijanej

Incorrect syntax near the keyword 'SET'. => na skrypcie doda

te skrypty są z msdn.

Na czym polega problem? Używam SQL Server 2008 R2.

Odpowiedz

6

Uważam, że twoje odniesienie dotyczy SQL Server Compact Edition. Zamiast tego użyj this one.

Musisz użyć składni CONSTRAINT i musisz użyć nazwy domyślnej. Nawet jeśli nie przypisałeś nazwy (i sugeruję, abyś robił to w przyszłości, ponieważ jest to dobra praktyka), SQL Server przydzieli jeden, który możesz znaleźć używając EXEC sp_help AccAccountGroup.

Spróbuj składnie:

ALTER TABLE AccAccountGroup 
DROP CONSTRAINT <default name> 

ALTER TABLE AccAccountGroup 
ADD CONSTRAINT DF_AccAccountGroup_name DEFAULT 'default value' FOR name 
+0

nie jest składnia „ALTER TABLE AccAccountGroup DROP CONSTRAINT ' – jose

+0

nie wiem, jak to dostałem brakowało na tak długo, ale to poprawione i przetestowane teraz Thanks?. –

5

Podany link dotyczy tylko programu SQL Server Compact Edition, a nie "pełnego" serwera SQL. Powyższe instrukcje są ważne tylko w SQL Server Compact Edition.

W "pełnym" SQL Server domyślne wartości dla kolumn są zaimplementowane za pomocą wiązań. Można dodać domyślne ograniczenie do tabeli przy użyciu coś jak

ALTER TABLE AccAccountGroup ADD CONSTRAINT AccAcctGrp_Name_Def DEFAULT 'default value' FOR name; 

i upuść go za pomocą

ALTER TABLE AccAccountGroup DROP CONSTRAINT AccAcctGrp_Name_Def; 

Pamiętaj, że musisz podać nazwę z przymusu, gdy go nie upuścić. Jeśli nie znasz nazwy ograniczenia, zostanie sprawdzone następujące zapytanie. Zmień nazwę schematu dbo, a także nazwy tabel i kolumn, czy/jak to konieczne:

SELECT object_name(default_object_id) 
    FROM sys.columns 
WHERE object_id = object_id('dbo.AccAccountGroup') 
    AND name = 'Name'; 

Gdy masz nazwy ograniczenia, można go upuścić. (Potwierdzenie: to zapytanie zostało zaczerpnięte z komentarza opublikowanego here.)

Powiązane problemy