Mam tabelę z kilkoma zerowymi kolumnami liczb całkowitych. Jest to niepożądane z kilku powodów, dlatego chcę zaktualizować wszystkie wartości null na 0, a następnie ustawić te kolumny na NOT NULL
. Oprócz zmiany wartości null na 0
dane należy zachować.
Szukam konkretnej składni SQL, aby zmienić kolumnę (nazwać ją ColumnA
) na „ not null
”. Załóżmy, że dane zostały zaktualizowane i nie zawierają wartości null.
Korzystanie z SQL Server 2000 .
sql-server
tsql
null
alter-table
alter-column
Koder Karmiczny
źródło
źródło
NOT NULL
może spowodować wiele rejestrowania.Odpowiedzi:
Najpierw spraw, aby wszystkie bieżące
NULL
wartości zniknęły:Następnie zaktualizuj definicję tabeli, aby nie dopuścić do „NULL”:
źródło
Miałem ten sam problem, ale pole było domyślnie ustawione na null, a teraz chcę ustawić domyślnie na 0. To wymagało dodania jeszcze jednej linii po rozwiązaniu mdb:
źródło
Będziesz musiał to zrobić w dwóch krokach:
źródło
W przypadku Oracle 11g mogłem zmienić atrybut kolumny w następujący sposób:
W przeciwnym razie odpowiedź abatichev wydawała się dobra. Nie można powtórzyć zmiany - narzeka (przynajmniej w SQL Developer), że kolumna nie jest już pusta.
źródło
datatype
. Samocolumname NOT NULL
wystarczy. Zobacz dokumentację .to działało dla mnie:
źródło
Tak długo, jak kolumna nie jest unikalnym identyfikatorem
Następnie
Zmień tabelę i ustaw w polu wartość inną niż null i określ wartość domyślną 0
źródło
wydaje się to prostsze, ale działa tylko na Oracle:
ponadto dzięki temu można również dodawać kolumny, a nie tylko je zmieniać. Aktualizuje się do wartości domyślnej (0) w tym przykładzie, jeśli wartość była null.
źródło
W przypadku
FOREIGN KEY CONSTRAINT
... wystąpi problem, jeśli „0” nie będzie obecne w kolumnie tabeli kluczy podstawowych. Rozwiązaniem tego jest ...KROK 1:
Wyłącz wszystkie ograniczenia za pomocą tego kodu:
KROK 2:
KROK 3:
Włącz wszystkie ograniczenia za pomocą tego kodu:
źródło
W moim przypadku miałem problemy z wysłanymi odpowiedziami. Skończyło się na tym, że:
Zmień
VARCHAR(200)
typ danych i opcjonalnie zmień wartość domyślną.Jeśli nie masz wartości domyślnej, będziesz mieć problem z dokonaniem tej zmiany, ponieważ domyślnie tworzenie konfliktu byłoby zerowe.
źródło
Weźmy przykład:
I chcę zmienić kolumnę
EMPLOYEE_NAME
naNOT NULL
. Tego zapytania można użyć do zadania:źródło
W przypadku wbudowanej javaDB zawartej w JDK (obsługiwana przez Oracle dystrybucja Apache Derby) poniższe działanie dla mnie działało
źródło
Aby kolumna nie była pusta i dodanie wartości domyślnej można również wykonać w graficznym interfejsie SSMS.
UPDATE myTable SET myColumn = 0
źródło
Możesz zmienić definicję istniejącej kolumny DB za pomocą następującego kodu SQL.
źródło