zoukankan      html  css  js  c++  java
  • sqlserver 通过判断执行的一些语句记录

    1、判断表中是否有指定数据,如果不存在则添加(INSERT INTO):

    INSERT INTO TableName (Column1, Column2, Column3, Column4, Column5)
    SELECT Value1, Value2, Value3, Value4, Value5
    WHERE NOT EXISTS (SELECT PrimaryName FROM TableName WHERE PrimaryName = PrimaryValue)

    2、判断表中是否有指定列,如果不存在则添加(ALTER TABLE):

    IF NOT EXISTS (SELECT TOP 1 * FROM INFORMATION_SCHEMA.COLUMNS WHERE [TABLE_NAME] = 'TableName' AND [COLUMN_NAME] = 'ColumnName')
        BEGIN 
            ALTER TABLE TableName ADD ColumnName INT NOT NULL DEFAULT 0
        END 
    GO

    3、如果需要在 ALTER TABLE 后需要立即执行 UPDATE 等语句

    方法1:在 ALTER TABLE 语句后写 GO,但是在 BEGIN 和 END 之前就不能这么写了(据说在新版本 SQL SERVER 中可以通过多个 BEGIN 和 END 来达到 GO 的效果,但是老的版本不行)。

    方法2:在 ALTER TABLE 语句后,使用 exec ('UPDATE TableName SET ColumnName = Value') 来执行 UPDATE 语句

    注意:如果是因为要添加非空列初始化一个固定值的话,可以通过设置 DEFAULT 来解决,不需要单独执行,但如果要根据其它数据条件来初始化,还是需要上述方法单独执行。

    4、判断存储过程是否存在,如果存在则删除(DROP PROCEDURE):

    IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'ProcedureName') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
        DROP PROCEDURE ProcedureName
    GO

    参考:https://www.cnblogs.com/li-peng/archive/2013/01/24/2874517.html

    END

  • 相关阅读:
    SDOI2008]仪仗队
    洛谷P1414 又是毕业季II
    P3865 【模板】ST表
    [HAOI2007]理想的正方形
    noip 2011 选择客栈
    [AHOI2009]中国象棋
    洛谷P3387 【模板】缩点
    [SCOI2005]最大子矩阵
    [CQOI2009]叶子的染色
    LibreOJ #116. 有源汇有上下界最大流
  • 原文地址:https://www.cnblogs.com/xwgli/p/13803580.html
Copyright © 2011-2022 走看看