UPDATEZmień podstawową kolumnę klucza w SQL Server
Oto ograniczeń w wyniku zapytania
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME COLUMN_NAME ORDINAL_POSITION
PK_history userKey 1
PK_history name 2
Oto wynik zapytania
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME CONSTRAINT_TYPE IS_DEFERRABLE INITIALLY_DEFERRED
PK_history PRIMARY KEY NO NO
END UPDATE
Mój komputer udostępnia interfejs do mojej bazy danych SQL Server za pośrednictwem programu ASP.NET Enterprise Manager.
mam 3 kolumny w moim history
tabeli:
userId
(key, int, NULL niedozwolone)name
(klucz, string, NULL niedozwolone)id
(nie klucz, int, NULL allowed)
Chcę, aby kolumna id była jedynym kluczem.
Aby to zrobić, wierzę muszę:
- Upewnij się, że nie ma wartości null w tej kolumnie dla każdego wiersza
- Ustaw kolumnę, aby nie pozwolić na wartości null
- Dodaj kolumnę jako klucz podstawowy
- Usunąć pozostałe 2 kolumny jako klucze
jednak kiedy używam UI pod warunkiem, że nie działa. Czasami będzie wyglądać, jakby próbował coś zrobić, ale nigdy się nie zmienia, gdy odświeżam widok kolumn. Czasami tworzy tabelę tymczasową, która wygląda tak, jakby próbowała wykonać część operacji, ale nigdy nie zostanie skopiowana/zastąpiona oryginalna tabela, którą próbuję zmienić.
Kiedy próbuję użyć zapytania, zmiany również się nie pojawiają. Oto pytania Chyba muszę:
SELECT * from history WHERE id is NULL <---- This shows 0 results
ALTER TABLE history
ALTER COLUMN id int NOT NULL
ALTER TABLE history ADD PRIMARY KEY (id)
ALTER TABLE history
DROP CONSTRAINT userId
DROP CONSTRAINT name
GO
stałam tylko na próbę, aby nie pozwolić na wartości null i dodać klucz podstawowy dla kolumny id. To nie działa. Czy ktoś może wskazać mi właściwy kierunek? Dzięki!
Czy pojawia się komunikat o błędzie? –
powinieneś usunąć ograniczenia najpierw –
nie, nie dostaję żadnych komunikatów o błędach z zapytaniem. W interfejsie użytkownika dostałem błąd związany z ustawianiem kolumny id na klucz, gdy zezwala na wartości null, ale brak błędu przy próbie wyłączenia wartości null. – ckbhodge