如何插入新字段并切换其值

时间:2018-06-18 10:46:12

标签: sql sql-server sql-server-2008

我有一个表名MyDBTbl。

   Name   DisplayOrder
---------------------------
   Home        1
   Products    2
   Contact     true
   Career      false

我想插入一个新属性Qualification,默认值为True。当用户再次运行脚本时,它将检查属性的存在,如果不存在则插入它,如果存在则将其值切换为false,反之亦然。

1 个答案:

答案 0 :(得分:0)

最初在数据库中创建表

CREATE TABLE Tempdata(Name VARCHAR(20), DisplayOrder VARCHAR(20))
INSERT INTO Tempdata
SELECT'Home'     ,'1'       UNION ALL
SELECT'Products' ,'2'       UNION ALL
SELECT'Contact'  ,'true'    UNION ALL
SELECT'Career'   ,'false'

在sql脚本下运行以获取您的需求并根据需求编写代码,我认为这对您有所帮助

 IF NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES 
                WHERE TABLE_NAME='Tempdata')
BEGIN
CREATE TABLE Tempdata(Name VARCHAR(20), DisplayOrder VARCHAR(20))
INSERT INTO Tempdata
SELECT'Home'     ,'1'       UNION ALL
SELECT'Products' ,'2'       UNION ALL
SELECT'Contact'  ,'true'    UNION ALL
SELECT'Career'   ,'false'
END
--DROP TABLE Tempdata
IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES 
                WHERE TABLE_NAME='Tempdata')
BEGIN

        IF NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS 
                        WHERE TABLE_NAME='Tempdata' AND COLUMN_NAME='Qualification')
        BEGIN
        ALTER TABLE Tempdata ADD Qualification VARCHAR(10)  NULL
        ALTER TABLE Tempdata ADD CONSTRAINT Df_Qualification DEFAULT('True') FOR Qualification
        UPDATE Tempdata SET Qualification='True'

        END

ELSE 
    IF  EXISTS(SELECT 1 FROM Tempdata
                      WHERE   Qualification='True'
                        )
    BEGIN
    UPDATE Tempdata SET Qualification='False'

    END
    ELSE UPDATE Tempdata SET Qualification='True'

END

SELECT * FROM Tempdata