我用Alter Table TableName drop 编号 在Access里行,但为啥子在SQLSERVER里显示不行,说的是编号不是约束
我用的是Alter Table TableName add 编号 nvarchar(100) null 在Access里添加和删除字段都很正常,但是在SQLServer里确不正常。请问如何解决这个问题呢?谢谢

解决方案 »

  1.   

    table是要更改的表的名称。如果表不在当前数据库中或者不属于当前用户所拥有,可以显式指定数据库和所有者。ALTER COLUMN指定要更改给定列。如果兼容级别是 65 或小于 65,将不允许使用 ALTER COLUMN。有关更多信息,请参见 sp_dbcmptlevel。 要更改的列不能是: 数据类型为 text、image、ntext 或 timestamp 的列。
    表的 ROWGUIDCOL 列。
    计算列或用于计算列中的列。
    被复制列。
    用在索引中的列,除非该列数据类型是 varchar、nvarchar 或 varbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。
    用在由 CREATE STATISTICS 语句创建的统计中的列。首先用 DROP STATISTICS 语句删除统计。由查询优化器自动生成的统计会由 ALTER COLUMN 自动除去。
    用在 PRIMARY KEY 或 [FOREIGN KEY] REFERENCES 约束中的列。
    用在 CHECK 或 UNIQUE 约束中的列,除非用在 CHECK 或 UNIQUE 约束中的可变长度列的长度允许更改。
    有相关联的默认值的列,除非在不更改数据类型的情况下允许更改列的长度、精度或小数位数。 
    有些数据类型的更改可能导致数据的更改。例如,将数据类型为 nchar 或 nvarchar 的列更改为 char 或 varchar 类型,将导致扩展字符的转换。有关更多信息,请参见 CAST 和 CONVERT。降低列的精度和小数位数可能导致数据截断。
      

  2.   

    delete from tablename where [...]
      

  3.   

    ALTER TABLE dbo.表的名称
    DROP COLUMN 字段名称
    这是删除字段ALTER TABLE dbo.表的名称
         ADD
    字段名称 数据类型 NULL(是否可以为空)
    这是添加字段的
      

  4.   

    SQL的帮助里找一找看,好像删除列时有些条件,记不清了
      

  5.   

    juwuyi(Delphi之沙漠菜鸟) +angle097113(深思不解) 兄的已经够楼主解决问题了
      

  6.   

    try:
    create table TableName(a int)Alter Table TableName add 编号 nvarchar(100) null 
    Alter Table TableName drop column 编号 drop table tableName每一句都能成功啊。楼主不是这样加的编号列吧? 比如是否加了default,check之类的东东?
      

  7.   

    ALTER TABLE dbo.表的名称
    DROP COLUMN 字段名称
    这是删除字段ALTER TABLE dbo.表的名称
         ADD
    字段名称 数据类型 NULL(是否可以为空)
    这是添加字段的
    举例说明:
     alter table dbo.Deptmart
            drop column DeptID
      
     alter table dbo.Deptmart
            add deptid varchar(6)  not null
      

  8.   

    为啥子再ACCESS里工作正常,再SQLSERVER里删除字段就出错,显示错误原因是要删除的字段不是约束
      

  9.   

    declare @name varchar(20)--动态得到约束名
    select @name=b.name from syscolumns a,sysobjects b where a.id=object_id('表名') and b.id=a.cdefault and a.name='列名' and b.name like 'DF%'--先删约束
    exec('alter table 表名 drop constraint '+@name) 
    --再删列
    alter table 表名 drop column 列名
      

  10.   

    如果你的这个列不是有默认值是主键的话:declare @a varchar(20)
    select @a=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('表名') and a.name='主鍵列名' and a.id=b.id and b.constid=c.id and c.name like 'PK%'
    if @a is not null
    exec('alter table 表名 drop constraint '+@a)--再删列
    alter table 表名 drop column 主鍵列名