Insert default value when parameter is null

后端 未结 16 2407
遥遥无期
遥遥无期 2020-12-24 05:27

I have a table that has a column with a default value:

create table t (
    value varchar(50) default (\'something\')
)

I\'m using a stored

16条回答
  •  既然无缘
    2020-12-24 05:49

    Hope To help to -newbie as i am- Ones who uses Upsert statements in MSSQL.. (This code i used in my project on MSSQL 2008 R2 and works simply perfect..May be It's not Best Practise.. Execution time statistics shows execution time as 15 milliSeconds with insert statement)

    Just set your column's "Default value or binding" field as what you decide to use as default value for your column and Also set the column as Not accept null values from design menu and create this stored Proc..

    `USE [YourTable]
    GO
    
    
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE PROC [dbo].[YourTableName]
    
        @Value smallint,
        @Value1 bigint,
        @Value2 varchar(50),
        @Value3 varchar(20),
        @Value4 varchar(20),
        @Value5 date,
        @Value6 varchar(50),
        @Value7 tinyint,
        @Value8 tinyint,
        @Value9 varchar(20),
        @Value10 varchar(20),
        @Value11 varchar(250),
        @Value12 tinyint,
        @Value13 varbinary(max) 
    

    -- in my project @Value13 is a photo column which storing as byte array.. --And i planned to use a default photo when there is no photo passed --to sp to store in db..

    AS
    --SET NOCOUNT ON
    IF @Value = 0 BEGIN
        INSERT INTO YourTableName (
            [TableColumn1],
            [TableColumn2],
            [TableColumn3],
            [TableColumn4],
            [TableColumn5],
            [TableColumn6],
            [TableColumn7],
            [TableColumn8],
            [TableColumn9],
            [TableColumn10],
            [TableColumn11],
            [TableColumn12],
            [TableColumn13]
        )
        VALUES (
            @Value1,
            @Value2,
            @Value3,
            @Value4,
            @Value5,
            @Value6,
            @Value7,
            @Value8,
            @Value9,
            @Value10,
            @Value11,
            @Value12,
            default
        )
        SELECT SCOPE_IDENTITY() As InsertedID
    END
    ELSE BEGIN
        UPDATE YourTableName SET 
            [TableColumn1] = @Value1,
            [TableColumn2] = @Value2,
            [TableColumn3] = @Value3,
            [TableColumn4] = @Value4,
            [TableColumn5] = @Value5,
            [TableColumn6] = @Value6,
            [TableColumn7] = @Value7,
            [TableColumn8] = @Value8,
            [TableColumn9] = @Value9,
            [TableColumn10] = @Value10,
            [TableColumn11] = @Value11,
            [TableColumn12] = @Value12,
            [TableColumn13] = @Value13
        WHERE [TableColumn] = @Value
    
    END
    GO`
    

提交回复
热议问题