Udostępnij za pośrednictwem


Określanie wartości domyślnych dla kolumn

Dotyczy: SQL Server 2016 (13.x) i nowszych Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Program SQL Server Management Studio (SSMS) umożliwia określenie wartości domyślnej wprowadzonej w kolumnie tabeli. Możesz ustawić wartość domyślną za pomocą Eksploratora obiektów lub wykonując transact-SQL.

Jeśli nie przypiszesz wartości domyślnej do kolumny, a użytkownik opuści kolumnę pustą, wówczas:

  • Jeśli ustawisz opcję zezwalania na wartości null, NULL zostanie wstawiona do kolumny.

  • Jeśli nie ustawisz opcji zezwalania na wartości null, kolumna pozostanie pusta, ale użytkownik lub aplikacja nie będzie mógł wstawić wiersza, dopóki nie podasz wartości dla kolumny.

Możesz użyć domyślnego ograniczenia dla różnych zadań, aby zapewnić spójność danych na poziomie bazy danych:

  • Ustaw wartość wiersza w kolumnie "aktywne" lub "włączenie" na 1 podczas wstawiania.
  • Ustaw wartość wiersza dla pola daty na bieżącą datę.
  • Ustaw wartość wiersza dla pola na deterministyczną funkcję systemową, na przykład DB_NAME().

Ograniczenia

Przed rozpoczęciem należy pamiętać o następujących ograniczeniach i restrykcjach:

  • Jeśli wpis w polu Wartość domyślna zastępuje powiązaną wartość domyślną (która jest wyświetlana bez nawiasów), zostanie wyświetlony monit o usunięcie powiązania domyślnego i zastąpienie go nową wartością domyślną.

  • Aby wprowadzić ciąg tekstowy, należy ująć wartość w pojedynczy cudzysłów ('). Nie używaj podwójnych cudzysłowów ("), ponieważ są one zarezerwowane dla identyfikatorów cytowanych.

  • Aby wprowadzić wartość domyślną liczbową, wprowadź liczbę bez znaków cudzysłowu.

  • Aby wprowadzić obiekt/funkcję, wprowadź nazwę obiektu/funkcji bez znaków cudzysłowu wokół niego.

  • W usłudze Azure Synapse Analytics dla ograniczenia domyślnego można używać tylko stałych. Nie można użyć wyrażenia z ograniczeniem domyślnym.

Uprawnienia

Aby wykonać akcje opisane w tym artykule, wymagane jest uprawnienie ALTER do tabeli.

Użyj programu SQL Server Management Studio, aby określić wartość domyślną

Eksplorator obiektów w programie SSMS umożliwia określenie wartości domyślnej dla kolumny tabeli. W tym celu wykonaj następujące kroki:

  1. Nawiąż połączenie z wystąpieniem programu SQL Server w programie SSMS.

  2. W eksploratorze obiektów kliknij prawym przyciskiem myszy tabelę z kolumnami, dla których chcesz zmienić skalę, a następnie wybierz pozycję Design.

  3. Wybierz kolumnę, dla której chcesz określić wartość domyślną.

  4. Na karcie Właściwości kolumny wprowadź nową wartość domyślną we właściwości Wartość domyślna lub Powiązanie.

    Aby wprowadzić wartość domyślną liczbową, wprowadź liczbę. W przypadku obiektu lub funkcji wprowadź jego nazwę. W przypadku wartości domyślnej alfanumerycznej wprowadź wartość wewnątrz pojedynczych cudzysłowów.

  5. W menu Plik wybierz Zapisz <nazwę tabeli>.

Użyj Transact-SQL, aby określić wartość domyślną

Istnieją różne sposoby określania wartości domyślnej dla kolumny przy użyciu języka T-SQL. W każdym z poniższych przykładów możesz otworzyć nowe zapytanie Transact-SQL, wykonując te kroki.

  1. W Eksploratorze Obiektów nawiąż połączenie z wystąpieniem Silnika Bazy Danych.

  2. Na pasku standardowym wybierz Nowe zapytanie.

  3. Skopiuj i wklej przykład do okna zapytania, a następnie wybierz opcję Wykonaj.

Używanie nazwanego ograniczenia

Podczas pracy z projektami baz danych zaleca się tworzenie ograniczeń z nazwami. W przeciwnym razie ograniczenie domyślne ma nazwę wygenerowaną przez system, która będzie się różnić w każdym środowisku serwera SQL, w którym są tworzone obiekty bazy danych.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);

Używanie metody ALTER TABLE

Można dodać nazwane ograniczenie do istniejącej tabeli za pomocą ALTER TABLE.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT
); -- Allows nulls.
GO

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

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50 FOR column_b;
GO

Użyj CREATE TABLE

Możesz utworzyć nową tabelę z domyślnymi ograniczeniami z CREATE TABLE.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);

Ustawianie daty utworzenia

W poniższym przykładzie użyto funkcji systemu sysdatetimeoffset(), aby wypełnić wartość wiersza kolumny dateinserted datą utworzenia wiersza.

CREATE TABLE dbo.test (
    id INT identity(1, 1) NOT NULL CONSTRAINT PK_test PRIMARY KEY
    ,date_inserted DATETIMEOFFSET(2) NOT NULL CONSTRAINT DF_test_date_inserted DEFAULT(sysdatetimeoffset())
);

Ograniczenie domyślne nie zmienia się po zaktualizowaniu wiersza. Aby zaktualizować wartość przy każdej modyfikacji wiersza, rozważ użycie wyzwalacza , tabeli czasowej , kolumny obliczonej lub tekstu binarnego rowversion. Rozważ również wstawianie wierszy przez wykonanie procedur składowanych zamiast bezpośredniego wstawiania wierszy, gdzie procedury składowane mogą wymuszać logikę biznesową, wartości domyślne i inne reguły spójności danych.

Aby wykryć wiersze, które zmieniają się, rozważ skorzystanie z Przechwytywania danych (CDC), śledzenia zmian, tabeli temporalnejlub tabeli rejestru.