有个需求,需要给某张表添加一列并且赋值,分解需求,一共分两部走:

  1. 添加列
  2. 赋值

两个功能都不难,很快实现。


--add column
alter table Med_Summary_Template
add SummaryTypeID varchar(10); --set column value
declare @ProgramName varchar(50), @SummaryType varchar(50), @SummaryTypeID varchar(10)
declare Cur_Smmary
cursor for select ProgramName, SummaryType from Med_Summary_Template
open Cur_Smmary
fetch next from Cur_Smmary into @ProgramName, @SummaryType
while @@FETCH_STATUS = 0
begin
select @SummaryTypeID = SummaryTypeID from Med_ProgramSummaryType
where ProgramName = @ProgramName and TypeName = @SummaryType;
if exists (select @SummaryTypeID as t)
begin
update Med_Summary_Template set SummaryTypeID = @SummaryTypeID
where ProgramName = @ProgramName and SummaryType = @SummaryType;
end
fetch next from Cur_Smmary into @ProgramName, @SummaryType
end
close Cur_Smmary
deallocate Cur_Smmary

运行正常。

但由于脚本是需要提供给客户的,需要能够重复运行而不能够报错,则改为了,如果该列存在,则不进行任何操作。然后加了个if判断

if not exists(select * from sys.columns where [object_id] = object_id('Med_Summary_Template') and name = 'SummaryTypeID')
begin
--add column and set column value
end

然而很不给力

Msg 207, Level 16, State 1, Line 19

Invalid column name 'SummaryTypeID'.

然后又给两步操作添加事务,但是SqlServer很不给力,总是报这个错,要么就是列添加上去了但是没有添加上数据。查了许久,没有头绪,只好去问领导,随后恍然大悟。原来修改表结构操作和update之类的数据操作是不能存在于一个事务的。然后说我update数据的方式写的太麻烦,然后直接撸了一个简单的。#表示第一次见这样用,新技能get

update Med_Summary_Template
set SummaryTypeID = b.SummaryTypeID
From Med_Summary_Template as a Inner Join Med_ProgramSummaryType as b ON
a.ProgramName=b.ProgramName And a.SummaryType = b.TypeName

完整代码如下。

go
if not exists(select * from sys.columns where [object_id] = object_id('Med_Summary_Template') and name = 'SummaryTypeID')
alter table Med_Summary_Template add SummaryTypeID varchar(10);
go
update Med_Summary_Template
set SummaryTypeID = b.SummaryTypeID
From Med_Summary_Template as a Inner Join Med_ProgramSummaryType as b ON
a.ProgramName=b.ProgramName And a.SummaryType = b.TypeName
go

表示真的比我写的简洁多了 -_-#

SqlServer 添加列并赋值的更多相关文章

  1. sqlserver添加列(字段)描述

    1.我的表 [id],[name],[type],[date]四个字段,,,表名是library 2.添加列描述 姓名:描述信息 library:表名 被描述字段:name EXECUTE sp_ad ...

  2. MySQL 添加列, 修改列, 删除列

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 查看数据库创建语句: show create database 数据库名: 查看创建表的语句: show c ...

  3. MySQL 语句大全--------添加列,修改列,删除列

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table ...

  4. MySQL 添加列,修改列,删除列

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table ...

  5. MySQL 中添加列、修改列以及删除列

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:); 删除列:alte ...

  6. C#;DataTable添加列;DataTable转List泛型集合;List泛型集合转DataTable泛型集合;

    给DataTable添加列 string sql = "select * from cgpmb order by code"; DataTable dt = Bobole.Data ...

  7. 【跟着stackoverflow学Pandas】 - Adding new column to existing DataFrame in Python pandas - Pandas 添加列

    最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...

  8. [转]RDLC报表——动态添加列

    本文转自:http://www.cnblogs.com/pszw/archive/2012/07/19/2599937.html 前言 最近接到一个需求:在给定的数据源中,某(些)列,可能需要单独统计 ...

  9. Wpf DataGrid动态添加列,行数据(二)

    这是第二中方法,可直接绑定,我这里只是做出了一种思路,并不是最完美. 这里注意一下,因为我里面引用了MVVMLight,所以可能代码不是复制过去就能用了的. 样式也是,所以复制过去看不是我贴出来的界面 ...

随机推荐

  1. 在Java中如何使用jdbc连接Sql2008数据库(转)

    我们在javaEE的开发中,肯定是要用到数据库的,那么在javaEE的开发中,是如何使用代码实现和SQL2008的连接的呢?在这一篇文章中,我将讲解如何最简单的使用jdbc进行SQL2008的数据库的 ...

  2. Scroll View 控件以Thumbnail的方式显示一个目录的全部图片,相似图片浏览器

    MAC : XCode -> Scroll View 控件以Thumbnail的方式显示一个目录的全部图片,类似图片浏览器 STEP1:将两个目录复制到project里面ImageBrowser ...

  3. HDU 2451 Simple Addition Expression(组合数学)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2451 Problem Description A luxury yacht with 100 pass ...

  4. Javascript语言精粹之正则表达式知识整理

    Javascript语言精粹之正则表达式知识整理 1.正则表达式思维导图 2.正则表达式常用示例 2.1 移除所有标签,只留下innerText var html = "<p>& ...

  5. shell编程三大神器之awk

  6. 初识google多语言通信框架gRPC系列(三)C#中使用gRPC

    我的这几篇文章都是使用gRPC的example,不是直接编译example,而是新建一个项目,从添加依赖,编译example代码,执行example.这样做可以为我们创建自己的项目提供借鉴.如果对gR ...

  7. Oracle SQL Lesson (7) - 使用子查询

    使用子查询简单子查询SELECT select_listFROM tableWHERE expr operator (SELECT select_list FROM table);子查询可以出现在se ...

  8. C# 视频教程

    http://www.cnblogs.com/kellen/tag/Silverlight/ http://www.lanmaodream.com/archives/244.html

  9. 安卓反汇编工具arm-eabi-objdump

    安卓反汇编工具 在Arm平台系统自带的反编译工具在android/prebuild/linux-/toolchail/arm-abil-/bin目录下的arm_eabi-objdump进行反汇编 ar ...

  10. [TWRP 2.8.4 ] 小米 3W 中文-英文版本 twrp

    经过半个小时的代码修改,从 2.7.0 移植到 2.8.4 的源代码上. 汉化操作是使用切换语言选项来实现的. 注意: 此版本的 twrp 还不支持双系统切换功能. 作者:laser杨万荣 如果需要转 ...