删除表数据并插入临时表

语句先判断要删除表的对象是否存在,如果存在则插入一条新数据,如果不存在则先创建一个删除表,再插入相应数据

表对象:TableName

删除表对象:TableName_deled

主键ID:pCol

其它列名:Fields


            if (!TableName.Contains("_deled"))
            {
                string tbname = TableName + "_deled";
                try
                {
                    string sql = "set identity_insert " + tbname + " on;";
                    sql += "insert into " + tbname + " (" + pCol + "," + Fields + ") select " + pCol + "," + Fields + " from " + TableName + " where " + pCol + " in (" + ids + ");";
                    sql += "set identity_insert " + tbname + " off;";
                    ExecuteSql(sql);
                }
                catch { ExecuteSql("select * into " + TableName + "_deled from " + TableName + " where " + pCol + " in (" + ids + ")"); }
            }

SQL Server 中创建临时表插入数据是常见的数据库操作,可以通过多种方式实现。以下是几种典型方法: ### 创建临时表插入数据 #### 方法一:使用 `SELECT INTO` 语句创建临时表插入数据 可以使用 `SELECT INTO` 语句直接从现有中提取数据创建临时表。该方法会自动定义结构填充数据: ```sql -- 创建临时表插入数据 SELECT ID, CNAME AS PNAME INTO #tmp FROM ORG_DEPARTMENT; -- 查询临时表数据 SELECT * FROM #tmp; ``` 此方法适用于一次性从现有中提取部分数据创建临时表的场景[^1]。 #### 方法二:使用 `CREATE TABLE` 显式定义临时表结构插入数据 如果需要更精确地控制字段类型和约束,可以使用 `CREATE TABLE` 创建临时表,然后使用 `INSERT INTO` 插入数据: ```sql -- 删除已存在的临时表 DROP TABLE IF EXISTS #tmp; -- 创建临时表 CREATE TABLE #tmp ( ID VARCHAR(80) NOT NULL, PNAME VARCHAR(200) ); -- 插入数据 INSERT INTO #tmp (ID, PNAME) SELECT ID, CNAME FROM ORG_DEPARTMENT; -- 查询数据 SELECT * FROM #tmp; ``` 这种方式适用于需要定义特定字段类型或添加索引、约束的场景[^1]。 #### 方法三:插入自定义数据 如果需要插入一组自定义数据,可以结合 `INSERT` 和 `SELECT` 语句使用 `UNION` 插入多条记录: ```sql -- 创建临时表 CREATE TABLE #T1 ( Name VARCHAR(50), ID INT ); -- 插入多条自定义数据 INSERT INTO #T1 (Name, ID) SELECT '小小', 1 UNION SELECT '中中', 2 UNION SELECT '大大', 3; -- 查询数据 SELECT * FROM #T1; ``` 该方法适用于手动插入固定数据或测试数据[^3]。 #### 方法四:插入查询结果清理临时表 在某些复杂查询场景中,可以将查询结果存入临时表,处理完成后删除临时表以释放资源: ```sql -- 创建临时表插入查询结果 SELECT BI.StoveBatch, SP.ProductSerialNumber2, SP.ProductSerialNumber3 INTO #TB FROM dbo.Box B INNER JOIN dbo.BoxItemlot BI ON BI.BoxId = B.BoxId INNER JOIN dbo.Product PD ON PD.ProductId = B.ProductId WHERE B.BoxCode = 'A12345'; -- 处理完数据删除临时表 DROP TABLE #TB; ``` 这种操作方式适用于需要多次引用中间结果集的复杂查询[^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值