修改表结构(200分)

  • 主题发起人 主题发起人 zip1
  • 开始时间 开始时间
Z

zip1

Unregistered / Unconfirmed
GUEST, unregistred user!
我想修改一个表的结构,这个表名:test
有三个是关键字(id int,p_id int,u_id int),其中id是自增长类型,我想去掉id的
关键字约束,同时去掉自增长的约束,
做完数据插入之后,我又要恢复,请问如何写sql语句?
 
你有毛病。
 
to gzfrank
你也够损的,不回答就算了,还说人家头发上贴膏药
 
我看有毛病的是:gzfrank![:D]
 
何必呢!何苦呢!。。。[:D]
给我个理由先!!!
 

这样做的唯一目的是尽量增加出错的几率

 
alter table test drop constraint pk_test
 
这样做的目的是我用原来的备份恢复表中的部分数据,先判断是否有这条记录存在,
如果没有就插入,如果有就修改。是用程序控制的。
但在插入数据时,必须要先修改约束,否则不可能实现插入!
 
但就算你插入了,重设KEY时,ID重了,系统报错。
程序中插入时将ID+1,不就行了?
 
数据备份,有人做过这方面的控件。
文件包 DBBackup.Zip
组件名称 TDBBackup
用途 数据库备份、恢复
程序编写 李颖

还有在http://delphi.mychangshu.com/有一个adobackup控件,您
自己参考一下思路就可以了。

我手头没有有关控件,不要向我要,呵呵。。。[d:d:d:d:d:d:d:]
 
真是麻烦!可以再新建一张表,再把数据导进去不就的了。
 
我为什么要这样做,你不必了解,我要做就肯定有他的道理,我先在就问题而论问题!
我真的不相信这里没高手!低手免说话!
 
ALTER TABLE [schema.]table
[ADD { { column datatype [DEFAULT expr] [column_constraint] ...
| table_constraint}
| ( { column datatype [DEFAULT expr] [column_constraint] ...
| table_constraint}
[, { column datatype [DEFAULT expr] [column_constraint] ...
| table_constraint} ] ... ) } ]
[MODIFY { column [datatype] [DEFAULT expr] [column_constraint] ...

| (column [datatype] [DEFAULT expr] [column_constraint] ...
[, column datatype [DEFAULT expr] [column_constraint] ...] ...) } ]

[PCTFREE integer] [PCTUSED integer]
[INITRANS integer] [MAXTRANS integer]
[STORAGE storage_clause]
[DROP drop_clause] ...
[ALLOCATE EXTENT [( [SIZE integer [K|M] ]
[DATAFILE 'filename']
[INSTANCE integer] )]

[ PARALLEL ( [ DEGREE { integer | DEFAULT } ]
[ INSTANCES { integer | DEFAULT } ]
)
| NOPARALLEL ]
[ CACHE | NOCACHE ]
[ ENABLE enable_clause
| DISABLE disable_clause ] ...

 
方法很简单:[:)][:)][:)]
去除自增长约束的方法是:
SET IDENTITY_INSERT test On|Off
去掉关键字的方法只能是先去掉全部的关键字,然后再加上,方法如下:
1、去掉全部的关键字
alter table test drop constraint pk_test
2、恢复全部关键字(假设有两个关键字:id,p_id)
ALTER TABLE test WITH NOCHECK ADD
CONSTRAINT PK_test PRIMARY KEY NONCLUSTERED
(id,p_id)ON [PRIMARY]
 
同意楼上的,要去掉关键字必须把全部的关键字去掉,然后再加,想要只去掉其中一个,
那是很困难的
 
用Tbatchmove有这个功能啊!
先用query把你要加入的数据记录找出来,用table指定要更新的表,
Batchmove1.Mode:=batAppendUpdate;如果有这条记录,就覆盖,没有就增加!
batchmove1.Execute;
 
多人接受答案了。
 
后退
顶部