`

给库中所有表添加主键和自动增长标识

阅读更多

要将库表导入到另外一个服务器上,库表结构和数据都导入成功,但是约束(主键和自动增长标识)丢失,最终在库中建立游标解决了,模拟代码如下:

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*****--

 

分享到:
评论

相关推荐

    oracle创建表空间、表、主键、外键、序列

    如果后来想添加主键,可以使用`ALTER TABLE`语句: ```sql ALTER TABLE 表名 ADD CONSTRAINT 主键约束名 PRIMARY KEY (列名); ``` 4. 外键: 外键用于在两个表之间建立关系,确保引用完整性。创建外键的语法如下:...

    SQL的主键和外键的作用.doc

    例如,创建学生表时,可以定义StudentNo为主键,并设置为自动增长(IDENTITY),同时定义StudentName为非空字段。创建外键约束时,可以在需要引用其他表主键的字段上添加FOREIGN KEY约束,并指定参照的表和字段,如...

    sqlserver自动增长字段设置方法.rar

    在SQL Server数据库管理系统中,自动增长(Identity)字段是一个非常重要的特性,主要用于为表中的记录生成唯一的标识符,通常作为主键使用。本教程将详细解释如何在SQL Server中设置和管理自动增长字段。 首先,...

    Oracle中主键自增实例

    在Oracle数据库系统中,主键(Primary Key)是表中的一个或一组字段,它们的值在整张表中是唯一的,用于唯一标识每一条记录。然而,与MySQL等其他数据库不同,Oracle并没有内置的自动递增(auto-increment)功能来...

    Hibernate映射文件主键的生成

    在Java的持久化框架Hibernate中,主键的生成策略是一个重要的概念,它涉及到数据库表记录的唯一标识如何自动生成。本篇文章将详细讲解Hibernate映射文件中关于主键生成的各种策略及其配置,帮助开发者更好地理解和...

    在SQLSERVER中通过存储过程和触发器创建主键生成器

    在SQL Server中,主键是表中的一个或多个字段,用于唯一标识每条记录,确保数据的完整性和一致性。默认情况下,SQL Server提供了一些内置机制,如`IDENTITY`属性,来自动为新插入的记录生成唯一的整数主键。然而,有...

    oracle中添加删除主键的方法

    在Oracle数据库管理中,主键是表结构设计中不可或缺的一部分,它用于唯一标识表中的每一行数据,并确保数据的完整性和一致性。本文将详细介绍在Oracle中如何添加和删除主键约束,以及一些相关的操作方法。 首先,...

    深入解析:数据库中不可或缺的主键

    主键(Primary Key)是在关系型数据库中用于唯一标识表中每一行数据的一个或多个字段的组合。它是数据库中确保数据完整性和一致性的关键元素之一。主键具有以下几个显著特点: 1. **唯一性**:主键的值必须在表中是...

    SQL Server设置主键自增长列(使用sql语句实现)

    在SQL Server数据库中,主键自增长列是一个重要的特性,它允许你在插入新记录时自动为该列生成唯一的标识符,通常用于唯一地标识表中的每一行。这在处理大量数据时尤其有用,因为它简化了数据插入过程,你无需手动为...

    c#自动创建数据表model类

    在C#编程中,开发人员经常需要为数据库中的每个表创建对应的Model类,这些类用于在业务逻辑层和数据访问层之间传输数据。手动创建这些类可能会非常耗时,尤其是在处理大型数据库时。因此,"c#自动创建数据表model类...

    中南大学数据库题库03数据表.docx

    7. **SQL操作**:在SQL中,`INSERT`用于向表中添加新行,可以指定所有列的值,部分列的值,或者插入默认值。`UPDATE`用于修改现有数据,`DROP`用于删除表,`CREATE DATABASE`用于创建新的数据库,`CREATE INDEX`用于...

    数据库主键的设计和思考

    数据库主键设计是数据库设计中的核心部分,主键是用来唯一标识一条记录的字段,它确保了数据的唯一性和完整性。本文主要讨论了两种常见的主键设计策略:自增主键和GUID主键。 首先,自增主键是利用数据库系统提供的...

    MySQL_2_约束和多表查询1

    创建主键约束有三种方式:第一种是直接在CREATE TABLE语句中添加主键约束,第二种是使用ALTER TABLE语句添加主键约束,第三种是创建联合主键。 唯一约束(unique) 唯一约束是指保证数据不能重复。唯一约束的特点...

    编号自动增长

    在对数据库进行任何操作之后,特别是对自动增长标识列进行了调整后,检查数据库的一致性和完整性是非常重要的。这可以确保所有的数据都正确无误地被保存,并且没有任何潜在的数据丢失或错误。 ```sql SELECT * FROM...

    MySQL数据库中创建学生表SQL语句

    根据实际需求,可以添加更多列,如邮箱、联系电话等,或者修改已有列的数据类型和约束,如增加 `Age` 列存储学生的年龄,或者将 `Gender` 列扩展为 `VARCHAR` 类型以容纳更多的性别选项。 4. **数据插入**: 创建...

    Mysql主键相关的sql语句集锦

    MySQL中的主键是数据库表设计中的重要概念,它是一个或一组字段,用于唯一标识表中的每一行记录。主键的值不能为NULL,并且在整个表中必须是唯一的。这篇文章主要汇总了与MySQL主键相关的SQL语句,帮助用户在创建、...

    addrowid.zip

    此外,对于大数据量的表,添加主键可能会带来性能问题,因为这需要对所有记录进行索引,消耗额外的存储空间,并可能导致表锁定,影响其他并发操作。因此,在进行这样的操作时,需要考虑数据库的性能和可用性。 总的...

    sqlldr导入带有自动增加的数据

    随后,创建了一个名为`seqtest`的序列,用于`pk`字段的自动增长。 #### SQL*Loader控制文件配置 ```sql LOAD DATA APPEND INTO TABLE testb FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( id, start_date ...

    mysql修改自增长主键int类型为char类型示例

    在MySQL数据库中,主键是表的一个重要组成部分,它用于唯一标识每条记录,并且通常设置为自动增长的整数类型,如INT。然而,在某些业务场景中,可能需要将已有的自增长主键INT类型改为CHAR类型。这通常发生在需要更...

    MySQL约束(主键,唯一,非空,外键)

    - 主键自动增长:在创建表时,可以指定字段为`INT AUTO_INCREMENT`作为主键,这样每次插入新记录时,该字段会自动递增。 4. **外键约束(FOREIGN KEY)** - 外键用来建立表与表之间的关联,确保数据的一致性。它...

Global site tag (gtag.js) - Google Analytics