要将库表导入到另外一个服务器上,库表结构和数据都导入成功,但是约束(主键和自动增长标识)丢失,最终在库中建立游标解决了,模拟代码如下:
use master
go
if exists(select * from sysdatabases where name='mytest')
drop database mytest
go
create database mytest
go
use mytest
go
create table user1
(
mid int ,
name varchar(25)
)
go
create table user2
(
mid int,
name varchar(25)
)
go
select * from user1
select * from user2
--drop table user1
--drop table user2
--*****start*****--
DECLARE @table_name sysname --保存表名的全局变量
-- 获得所有User表
DECLARE tables_cursor CURSOR FOR select name from sysobjects where xtype='U' and status>0 --(加入这个条件是因为前面的条件查询出来的结果带有"dtproperties"非用户所建的表,应该还有其他滤去该表的条件)
OPEN tables_cursor
-- Perform the first fetch
FETCH NEXT FROM tables_cursor INTO @table_name
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
-- 遍历表@table_name的每条记录
-- 动态生成执行语句
exec ( 'alter table '+ @table_name+' drop column mid ' )
exec ('alter table '+ @table_name +' add mid int primary key IDENTITY(1,1) ')
FETCH NEXT FROM tables_cursor INTO @table_name
END
CLOSE tables_cursor --CLOSE语句关闭已打开的游标,之后不能对游标进行读取等操作,但可以使用OPEN语句再次打开该游标
DEALLOCATE tables_cursor --DEALLOCATE语句删除定义游标的数据结构,删除后不可再用
(关于DEALLOCATE:http://www.yesky.com/imagesnew/software/tsql/ts_de-dz_7vxh.htm)
--*****end*****--
分享到:
- 2009-02-20 17:23
- 浏览 1167
- 评论(0)
- 论坛回复 / 浏览 (0 / 1789)
- 查看更多
相关推荐
因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误...自动增长型字段允许我们在向数据库添加数据时,不考虑主键的取值,记录插入后,数据库系统会自动为其分配一个值,确保
04 04Hibernate_Composite : 复合主键的使用,在开发中很少用到,一般良好的设计都会为一个表添加一个自动增长的主键标识列。其中重点配置方法和Hibernate中普遍采用的方法链编程的使用。还需注意可以将组合主键构建...
23、自动标识主键(主键字段标识为-*-字段名-*-) 24、冻结指定行、列功能。使查看操作更加方便 25、数据集更改后,在提交前可选查看所有更改的部分数据。并用颜**分。 26、自定义我的收藏功能。 27、...
* GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型) * GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。(这个值要与generator一起使用) * generator 指定...
检索“标识”或“自动编号”值:提供一个特定示例,它将为 Microsoft SQL Server 表中的“标识”(Identity) 字段所生成的值以及 Microsoft Access 表中的“自动编号”(Autonumber) 字段映射到表中插入行的列。...
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表 (select a from tableA ) except (select a from tableB) except (select a from tableC) 17、说明:随机取出10条...
在Windows98系统中,鼠标的右键功能虽然很强但还不够完善,这里我们为其增加“快速启动”和“关闭系统”的两个选项,来完善鼠标的右键功能。 点击HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\DIRECTORY\SHELL,用鼠标...
支持代码自动更正,如输入ndf,自动替换成NO_DATA_FOUND,输入the自动替换成the,类似的自动替换还可以自己修改和添加。 7. 方便的左边行号显示,单击左边行号就可以实现调试断点的增加/删除 8. 对各种快捷键的...
数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数据库就...
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表 (select a from tableA ) except (select a from tableB) except (select a from tableC) 17、说明:随机取出10条...
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表 (select a from tableA ) except (select a from tableB) except (select a from tableC) 17、说明:随机取出10条...
数据库设计命名规范全文共6页,当前为第1页。数据库设计命名规范全文共6页,当前...如自动增长主键) 表内不应该存储依赖于其他键的非键信息 索引命名规范 索引须按照IDX_table_<column>_,其中是建立索引的表名,<colum
给表起别名,表<空格>表别名;)。 如:Select first_name EMPLOYEES, 12*(salary+100) AS MONEY, manager_id "ID1" From s_emp E; 4、字段的拼接,可用双竖线(双竖线只能用于select语句里)。不同的DBMS可能使用不同...
9.2.1 查询表中所有数据 171 9.2.2 查询表中指定字段的数据 172 9.2.3 查询结果中去除重复信息 174 9.2.4 根据现有列值计算新列值 174 9.2.5 命名新列 175 9.2.6 将查询结果保存为新表 176 9.2.7 连接字段 177 9.3 ...
在查询结果中增加一个自动增长的ID select id=identity(int, 1, 1), * into #T from testTable select * from #T drop table #T sql删除重复的记录 打开测试数据库test,并以表w01为例,将下面的SQL语句放入sql...
在设计数据库的表结构时,经常会使用一个自动增长的数字序列作为主键字段(代理主键)。除了作为主键使用之外,自增字段也可以用于记录各个操作发生的先后顺序,因为它具有递增特性。当我们插入一行数据时,数据库会...
33.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。 答:解1: select top 10 * from A where id not in (select top 30 id from A) 解2: select top 10 * ...
--使用ALTER TABLE 语句为已经创建的表添加主键约束、外键约束 --主键 ALTER TABLE Customer ADD CONSTRAINT PK_Customer PRIMARY KEY(CusNo) GO ALTER TABLE Product ADD CONSTRAINT PK_Product PRIMARY KEY...
答:标识是为了方便和简介映射文件,主键是为了让数据不会重复。 为什么每次请求都要创建一个Action对象? 答:Struts2每次请求的时候都会创建一个action实例,这样会保证线程的安全。Struts1只是在第一次请求的...
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) (5) 数据记录统计函数: AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据...