2012-03-20 8 views
5

Próbuję coś przetestować i pojawia się problem, że nie mogę powiązać wartości domyślnej z kolumną.Dodaj predefiniowane domyślne do kolumny w T-SQL

Moim celem jest zmiana kolumny i dołączenie domyślnej wartości domyślnej True do tej kolumny.

Co robię źle?

CREATE default [dbo].[True] as (1) 
GO 

CREATE TABLE dbo.aaa (column_a INT, column_b char(1)) ; 
GO 

INSERT INTO dbo.aaa (column_a)VALUES (7) ; 
GO 

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT [dbo].[True] FOR column_b ; 
GO 

INSERT INTO dbo.aaa (column_a) VALUES (10) ; 
GO 

SELECT * FROM dbo.aaa ; 
GO 

DROP TABLE dbo.aaa ; 
GO 

W tym przykładzie pojawia się błąd na stole linii ALTER

Msg 128, Level 15, State 1, Linia 1

Nazwa "dbo.True" nie jest dozwolone w tym kontekście. Poprawne wyrażenia są stałymi, stałymi wyrażeniami i (w niektórych kontekstach) zmiennymi. Nazwy kolumn nie są dozwolone.

+0

Witamy w StackOverflow: jeśli umieścisz kod, XML lub próbki danych, ** proszę ** zaznacz te linie w edytorze tekstu i kliknij przycisk "próbki kodu" (' {} ') na pasku narzędzi edytora, aby ładnie sformatować i podświetlić składnię! –

+1

Czy pojawia się błąd? Jeśli tak: ** gdzie ** (na jakim wierszu w kodzie przykładowym) - i ** co dokładnie ** oznacza błąd? –

+0

Dodałem błąd, który Twój kod wygenerował dla mnie na swoje pytanie, ale lepiej, jeśli to zrobisz, w przypadku, gdy jestem z jakiegoś powodu, otrzymuję inny błąd. –

Odpowiedz

1

Jeśli chcesz, aby kolumna domyślnie na "1", to dlaczego nie spróbować tego:

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT '1' FOR column_b ; 

Domyślna nazywa True. Jeśli jedynymi możliwościami są True lub False, prawdopodobnie powinieneś zmienić typ z char (1) na bit. Zmienna stanie się następująca:

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT 1 FOR column_b ; 
0

Nie ma składni do wiązania wstępnie zdefiniowanych wartości domyślnych. Trzeba użyć stored procedure:

sp_bindefault 'True', 'dbo.aaa.column_b' 
+0

To sp jest przestarzałe ... –

+0

@SirCrispalot Tak więc jest domyślne tworzenie. –

+0

tak poprawnie widziałem w dokumentacji, że zostanie to usunięte. Ale jaka jest alternatywa? jeśli utworzę typ zdefiniowany przez użytkownika i chcę umieścić tam wartość domyślną, to korzysta on również z ustawienia domyślnego tworzenia? –

Powiązane problemy