sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man skapar standard begränsningsberoende annan kolumn i sql-servern

Du vill ha en beräknad kolumn. Till exempel:

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

Du kan lägga till i en befintlig tabell med följande syntax:

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

Du kan göra kolumnen bestående genom att lägga till nyckelordet PERSISTED efter att kolumnen skapats. Om kolumnen kvarstår betyder det att fältet lagras på disken. När du infogar eller uppdaterar en post kommer SQL-servern att räkna ut värdet vid den tidpunkten. Om du inte gör det måste SQL Server lösa det varje gång du kommer åt raden. En bra förklaring finns på SQL Server 2005 Computed Kolumn kvarstår

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



  1. finns det något sätt att logga alla misslyckade SQL-satser i Oracle 10g

  2. InsertAllOnSubmit infogar endast den första dataposten

  3. Hur ändrar man PostgreSQL användarlösenord?

  4. Hur kan jag hämta en lista med parametrar från en lagrad procedur i SQL Server