sql >> Database >  >> RDS >> Sqlserver

Hoe een standaardbeperkingsafhankelijke andere kolom in sql-server te maken

U wilt een berekende kolom. Bijvoorbeeld:

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

U kunt een bestaande tabel toevoegen met de volgende syntaxis:

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

U kunt de kolom persistent maken door het trefwoord PERSISTED toe te voegen na het maken van de kolom. Het aanhouden van de kolom betekent dat het veld op schijf is opgeslagen. Wanneer u een record invoegt of bijwerkt, berekent SQL-server de waarde op dat moment. Als u dat niet doet, moet SQL Server dit elke keer dat u de rij opent, oplossen. Een goede uitleg is te vinden op SQL Server 2005 Computed Kolom blijft bestaan

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



  1. MySql-gegevens ophalen en opslaan in Javascript-array

  2. PostgreSQL:index maken op lengte van alle tabelvelden

  3. SQL-syntaxisfout wanneer ik de query uitvoer

  4. Kan parameter niet doorgeven via referentie in MySQLi