Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So erstellen Sie eine von der Standardeinschränkung abhängige andere Spalte in SQL Server

Sie möchten eine berechnete Spalte. Zum Beispiel:

CREATE TABLE tab1
(
 ID INT IDENTITY(1,1)
,[Type] VARCHAR(10)
,IsValued AS CASE [Type] WHEN 'S' THEN 1
                         WHEN 'R' THEN 0
             END
)

Sie können mit der folgenden Syntax zu einer vorhandenen Tabelle hinzufügen:

ALTER TABLE dbo.tab1 ADD IsValued AS CASE [Type] WHEN 'S' THEN 1
                                                 WHEN 'R' THEN 0
                                     END

Sie können die Spalte persistent machen, indem Sie das Schlüsselwort PERSISTED hinzufügen nach der Spaltenerstellung. Das Beibehalten der Spalte bedeutet, dass das Feld auf der Festplatte gespeichert wird. Wenn Sie einen Datensatz einfügen oder aktualisieren, berechnet der SQL-Server den Wert an diesem Punkt. Wenn Sie dies nicht tun, muss SQL Server dies jedes Mal herausfinden, wenn Sie auf die Zeile zugreifen. Eine gute Erklärung finden Sie unter SQL Server 2005 Computed Spalte wird beibehalten

ALTER TABLE dbo.tab1 ADD IsValued AS CASE [Type] WHEN 'S' THEN 1
                                                 WHEN 'R' THEN 0
                                     END PERSISTED