Udostępnij przez


computed_column_definition (języka Transact-SQL)

Określa właściwości kolumny obliczanej dodawane do tabeli przy użyciu instrukcji ALTER TABLE.

Topic link iconKonwencje składni języka Transact-SQL

column_name AS computed_column_expression
[ PERSISTED [ NOT NULL ] ]
[ 
    [ CONSTRAINT constraint_name ]
    { PRIMARY KEY | UNIQUE }
        [ CLUSTERED | NONCLUSTERED ]
        [ WITH FILLFACTOR = fillfactor ]
        [ WITH ( <index_option> [, ...n ] ) ]
        [ ON { partition_scheme_name ( partition_column_name ) | filegroup 
            | "default" } ]
    | [ FOREIGN KEY ] 
        REFERENCES ref_table [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE } ] 
        [ ON UPDATE { NO ACTION } ] 
        [ NOT FOR REPLICATION ] 
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )
]

Argumenty

  • column_name
    Is the name of the column to be altered, added, or dropped.column_name can be 1 through 128 characters.Dla nowej kolumny column_name można pominąć w przypadku kolumn utworzonych za pomocą timestamp Typ danych. Jeśli nie column_name jest określony dla timestamp kolumna o typie danych, nazwa timestamp jest używany.

  • computed_column_expression
    Wyrażenie definiujące wartość kolumny obliczanej.Kolumna obliczana jest kolumną wirtualną, która nie jest fizycznie przechowywana w tabeli, ale jest obliczana na podstawie wyrażenia używającego innych kolumn w tej samej tabeli.Na przykład kolumna obliczana może mieć następującą definicję: koszt AS cena * il.Wyrażenie może być nazwą kolumny nieobliczanej, stałą, funkcją, zmienną i dowolną kombinacją tych elementów połączonych za pomocą jednego lub wielu operatorów.Nie może ono być podkwerendą ani zawierać typu danych alias.

    Setting an option on all indexes on a table

    • Kolumny obliczanej nie można używać jako definicji ograniczenia DEFAULT ani FOREIGN KEY. Nie można jej również używać z definicją ograniczenia NOT NULL.Jeśli jednak wartość kolumny obliczanej jest zdefiniowana przez wyrażenie deterministyczne i typ danych wyniku jest dozwolony w kolumnach indeksu, kolumna obliczana może być używana jako kolumna klucza w indeksie lub jako część dowolnego ograniczenia PRIMARY KEY lub UNIQUE.

      Jeśli na przykład tabela ma kolumny a i b wartości całkowitych, kolumna obliczana a + b może być indeksowana, ale kolumna obliczana a+DATEPART(dd, GETDATE()) nie, ponieważ ta wartość mogłaby ulec zmianie w kolejnych wywołaniach.

    • Kolumna obliczana nie może być docelowym instrukcja INSERT lub UPDATE.

      Uwaga

      Setting an option on a table with no clustered index

  • TRWAŁE
    Określa, że Database Engine będzie fizycznie przechowywania obliczonych wartości w tabela i zaktualizować wartości, kiedy są aktualizowane inne kolumny, od których zależy kolumna obliczana. The following example disallows page locks on a table with no clustered index (a heap).Aby uzyskać więcej informacji zobaczTworzenie indeksów na kolumny obliczane.Any computed columns used as partitioning columns of a partitioned table must be explicitly marked PERSISTED.computed_column_expression must be deterministic when PERSISTED is specified.

  • WARTOŚCI NULL | NIE JEST PUSTY
    Określa, czy w kolumnie są dozwolone wartości null.NULL nie jest ścisłym ograniczeniem, ale może być określone jako NOT NULL.Ograniczenie NOT NULL można określić dla kolumn obliczanych tylko w przypadku, gdy określono również ograniczenie PERSISTED.

  • OGRANICZENIA
    A compound data type is one that contains multiple simple data types and methods.

  • constraint_name
    Nowe ograniczenie.Nazwy ograniczeń muszą być zgodne z regułami dotyczącymi identyfikatorów, z tym wyjątkiem, że nazwa nie może zaczynać się znakiem numeru (#).Jeśli parametr constraint_name nie zostanie podany, do ograniczenia będzie przypisana nazwa wygenerowana przez system.

  • KLUCZ PODSTAWOWY
    Ograniczenie wymuszające integralność jednostki dla określonej kolumny lub kolumn za pomocą unikatowego indeksu.Dla każdej tabeli można utworzyć tylko jedno ograniczenie PRIMARY KEY.

  • UNIKATOWE
    COLUMNS_UPDATED tests for UPDATE or INSERT actions performed on multiple columns.

  • ZGROMADZONE | NIEKLASTROWANY
    Określa, że dla ograniczenia PRIMARY KEY lub UNIQUE jest tworzony indeks klastrowany lub nieklastrowany.Wartość domyślna dla ograniczeń PRIMARY KEY to CLUSTERED.Wartość domyślna dla ograniczeń UNIQUE to NONCLUSTERED.

    COLUMNS_UPDATED returns multiple bytes if the table on which the trigger is created contains more than eight columns, with the least significant byte being the leftmost.COLUMNS_UPDATED returns TRUE for all columns in INSERT actions because the columns have either explicit values or implicit (NULL) values inserted.

  • To test for updates or inserts to specific columns, follow the syntax with a bitwise operator and an integer bitmask of the columns being tested.fillfactor
    Określa, w jaki sposób pełnej SQL Server Database Engine Upewnij się każdej strona indeksu używany do przechowywania danych indeksu. Określone przez użytkownika fillfactor wartości mogą być od 1 do 100. Jeżeli nie określono wartości, wartość domyślna jest równa 0.

    Important noteImportant Note:

    Dokumentację opcji WITH FILLFACTOR = fillfactor jako jedynej opcji indeksu mającej zastosowanie do ograniczeń PRIMARY KEY i UNIQUE zachowano ze względu na zgodność ze starszymi wersjami, ale nie będzie ona dokumentowana w ten sposób w przyszłych wersjach.Inne opcje indeksu można określić w klauzuli index_option (Transact-SQL) instrukcji ALTER TABLE.

  • ODWOŁANIA DO klucz obcy
    Jest ograniczenie, które zapewnia więzów integralność danych w kolumna lub kolumn.klucz obcy ograniczenia wymagają, że każda wartość kolumna istnieje w odpowiedniej odwołania kolumna lub kolumn w tabela, do którego istnieje odwołanie.Ograniczenia klucz obcy może odwoływać się tylko te kolumny, które są ograniczenia klucz podstawowy lub UNIQUE tabela, do którego istnieje odwołanie lub kolumny, do którego odwołuje się indeks unikatowy oparty na tabela, do którego istnieje odwołanie.Klucze obce w kolumny obliczane muszą również być oznakowane PERSISTED.

  • ref_table
    Nazwa tabeli, do której odwołuje się ograniczenie FOREIGN KEY.

  • ( ref_column )
    Kolumna z tabeli, do której odwołuje się ograniczenie FOREIGN KEY.

  • ON DELETE { NO ACTION | CASCADE }
    Określa akcję wykonywaną w odniesieniu do wierszy w tabeli, jeśli te wiersze mają relację referencyjną i wiersz, do którego następuje odwołanie, zostanie usunięty z tabeli nadrzędnej.Wartość domyślna to NO ACTION.

    • BRAK akcja
      The Database Engine raises an error and the delete akcja on the row in the parent tabela is rolled back.

    • KASKADOWO
      Odpowiednie wiersze są usuwane z tabela odwołujący się usunięcie tego wiersza z tabela nadrzędnej.

    Na przykład w AdventureWorks Baza danych, tabela ProductVendor ma referencyjną relacji z tabeli Dostawca. When a column set is defined on a table, the COLUMNS_UPDATED function behaves in the following ways:

    Jeśli Instrukcja DELETE jest wykonywane dla wiersza w tabela dostawcy i określono akcja ON DELETE CASCADE ProductVendor.VendorID, Database Engine sprawdza, czy jeden lub więcej zależne od wierszy w tabela ProductVendor. When a column set is explicitly updated, the bit for the column set is set to 1, and the bits for all of the sparse columns in that table are set to 1.

    I odwrotnie, jeśli akcja nie jest określony, Database Engine wywołuje błąd, a w rolkach ponownie akcji usuwania w wierszu, dostawca, gdy istnieje co najmniej jeden wiersz w tabela ProductVendor, która odwołuje się do jej.

    Nie należy określać CASCADE, jeśli w tabela mają zostać uwzględnione w publikacja korespondencji seryjnej, która korzysta z logicznego rekordów.Aby uzyskać więcej informacji o rekordach logiczny zobacz Grupowanie zmiany pokrewne wiersze z rekordami logicznych.

  • Because changes to a column set cause the bits of all columns in the column set to be set to 1, columns in a column set that were not changed will appear to have been modified.
    Określa akcję wykonywaną w odniesieniu do wierszy w tworzonej tabeli, jeśli te wiersze mają relację referencyjną i wiersz, do którego następuje odwołanie, zostanie zaktualizowany z tabeli nadrzędnej.W przypadku określenia wartości NO ACTION aparat Database Engine zgłasza błąd i wycofuje akcję aktualizacji w odniesieniu do wiersza Vendor, jeśli odwołująca się do niego tabela ProductVendor zawiera co najmniej jeden wiersz.

  • NIE DO replikacja
    Tę klauzulę można określić dla ograniczeń FOREIGN KEY i CHECK.W przypadku jej określenia dla ograniczenia nie jest ono wymuszane, gdy agent replikacji wykonuje operacje wstawiania, aktualizacji lub usuwania.Aby uzyskać więcej informacji, zobacz Kontrolowanie ograniczenia tożsamości i wyzwalaczy z nie dla replikacja.

  • SPRAWDŹ
    Jest ograniczenie, które wymusza integralność domena, ograniczając możliwych wartości, które mogą być wprowadzane do kolumna lub kolumn.Sprawdź ograniczenia dla kolumny obliczanej również muszą być oznakowane PERSISTED.

  • logical_expression
    Wyrażenie logiczne, które zwraca wartość TRUE lub FALSE.Nie może ono zawierać odwołania do typu danych alias.

  • ON { partition_scheme_name (partition_column_name) | filegroup| "domyślny"}
    Określa lokalizację przechowywania indeksu tworzonego dla ograniczenia.W przypadku określenia parametru partition_scheme_name indeks jest dzielony na partycje. Partycje te są mapowane na grupy plików określone przez parametr partition_scheme_name.W przypadku określenia parametru filegroup indeks jest tworzony w nazwanej grupie plików.W przypadku określenia wartości "default" lub nieokreślenia klauzuli ON indeks jest tworzony w tej samej grupie plików co tabela.Określenie klauzuli ON przy dodawaniu indeksu klastrowanego do ograniczenia PRIMARY KEY lub UNIQUE powoduje, że cała tabela zostaje przeniesiona do określonej grupy plików podczas tworzenia indeksu klastrowanego.

    Uwaga

    W tym kontekście domyślnie nie jest słowem kluczowym.Może być VIEW lub tabela bazowa.Jeżeli określono wartość "" domyślny", opcja QUOTED_IDENTIFIER musi być włączone dla bieżącej sesja.Jest to ustawienie domyślne.Aby uzyskać więcej informacji zobaczzestaw QUOTED_IDENTIFIER (języka Transact-SQL).

Remarks

Każdy ograniczenia klucz podstawowy i unikatowy generuje indeks.Liczby ograniczeń UNIQUE i klucz podstawowy nie może spowodować, że liczba indeksów w tabela, aby przekraczać 999 ponownego zbudowania indeksów nie klastrowanych i 1 indeks klastrowany.