create table tablename(id int identity(1,1),name varchar(10))
insert tablename select 'a'
union all select 'b'自己看看结果!

解决方案 »

  1.   

    谢谢你!skyboy0720(飞) 
    你能具体解释一下吗?
      

  2.   

    identity(1,1)表示ID为自动增长,第1个“1”表示从1开始增长,第2个“1” 表示每次增长1
      

  3.   

    谢谢!skyboy0720(飞) 
    如果我的表是手工建的,自己选择数据类型,identity(1,1)是不是可以选择啊?对不起,向你问这么菜的问题!
      

  4.   

    非常感激!
    你的qq是多少?
    以后有什么问题直接向您请教!
    我的qq:63194627
    谢谢!
      

  5.   

    IDENTITY(属性)
    在表中创建一个标识列。该属性与 CREATE TABLE 及 ALTER TABLE Transact-SQL 语句一起使用。说明  IDENTITY 属性与 SQL-DMO Identity 属性不同,后者表现列的行标识属性。 
    语法
    IDENTITY [ ( seed , increment ) ]参数
    seed装载到表中的第一个行所使用的值。increment增量值,该值被添加到前一个已装载的行的标识值上。必须同时指定种子和增量,或者二者都不指定。如果二者都未指定,则取默认值 (1,1)。注释
    如果在经常进行删除操作的表中存在着标识列,那么在标识值之间可能会产生差距。如果这构成了问题,那么请不要使用 IDENTITY 属性。但是,为了确保未产生差距,或者为了弥补现有的差距,在用 SET IDENTITY_INSERT ON 显式地输入标识值之前,请先对现有的标识值进行计算。如果重新使用已删除的标识值,那么请使用示例 B 中的示例代码进行检查,以获得下一个可用的标识值。请用您的表名、标识列数据类型以及(该数据类型的)最大可允许值的数值 –1 替换 tablename、column_type 和 max(column_type) – 1。使用 DBCC CHECKIDENT 检查当前的标识值,并将其与标识列中的最大值进行比较。 当将 IDENTITY 属性与 CREATE TABLE 一起使用时,Microsoft® SQL Server™ 使用 CREATE TABLE 的 NOT FOR REPLICATION 选项替代标识列的自动增加。通常,SQL Server 给插入表中的每个新行指派一个值,该值比前面的最高值要大出某些增量。但是,如果新行是由另一个数据源复制过来的,那么标识值必须保持与其在数据源中完全相同。示例
    A. 将 IDENTITY 属性与 CREATE TABLE 一起使用
    下面的示例创建一个新表,该表将 IDENTITY 属性用于获得自动增加的标识号。USE pubs
    IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
          WHERE TABLE_NAME = 'new_employees')
       DROP TABLE new_employees
    GO
    CREATE TABLE new_employees
    (
     id_num int IDENTITY(1,1),
     fname varchar (20),
     minit char(1),
     lname varchar(30)
    )INSERT new_employees
       (fname, minit, lname)
    VALUES
       ('Karin', 'F', 'Josephs')INSERT new_employees
       (fname, minit, lname)
    VALUES
       ('Pirkko', 'O', 'Koskitalo')
      

  6.   

    建表时可用:create table tablename(id int identity(1,1),name varchar(10))
    ----------------------------------------------------------------------如果需要删除数据后ID仍按顺序的可参考:
    --删除记录后ID的自动变化
    ---------------------------------函数
    create function emp_getid()
    returns int
    as
    begin
    declare @id int
    select @id=max(id) from emp
    set @id=isnull(@id,0)+1
    return(@id)
    end--表
    CREATE TABLE [dbo].[emp] (
    [id] [int] NOT NULL ,
    a varchar(10)
    ) ON [PRIMARY]
    GOALTER TABLE [dbo].[emp] WITH NOCHECK ADD 
    CONSTRAINT [PK_emp] PRIMARY KEY  CLUSTERED 
    (
    [id]
    )  ON [PRIMARY] 
    GOALTER TABLE [dbo].[emp] WITH NOCHECK ADD 
    CONSTRAINT [DF__emp__id__208CD6FA] DEFAULT ([dbo].[emp_getid]()) FOR [id]
    GO
    --触发器
    create trigger emp_delete on dbo.emp
    AFTER delete
    as
    declare @id int,@mid int
    select @mid=min(id),@id=@mid-1 from deleted
    update emp set id=@id,@id=@id+1 where id>@mid--测试数据
    insert emp (a)
    select '10'
    union all select '20'
    union all select '30'delete emp where id =2select * from empdrop table emp
    drop function emp_getid/*
    id    a
    -----------
    1 10
    2 30*/
      

  7.   

    谢谢internetcsdn(公元1979年8月10日) 给我这么详细的讲解!
    谢谢!
    一定会重分感谢!
      

  8.   

    来学习的收藏! 不过我用的是 mysql 可不可以也自动编号啊? 要分我开帖