刪除SQL表資料時存在約束的解決方法

2021-09-02 19:08:16 字數 2191 閱讀 2258

這幾天在做專案時,清除庫中的資料,但是各表之間都存在約束關係,無法使用 『 truncate table 表名 』語句進行操作,通過查詢資料,找到了解決方法,當表之間存在約束關聯時,想要執行truncate刪除語句,就要先將約束禁用掉,刪除後在恢復約束,就可以操作了。具體方法如下:

(1)查詢要刪除表存在哪些約束的sql

select constraint_name, constraint_type, status from user_constraints where table_name='要刪除的表名';

(2)禁止外來鍵約束的sql

方式一:

alter table '表名'disableconstraint '約束名稱'; 

alter table prj_project disable constraint sys_c0018174;

方式二:

alter table '表名' modify constraint '約束名稱' disable cascade;

alter table prj_project modify constraint pk_prj_project disable cascade;

(3)執行truncate 語句刪除資料

truncate table '表名'; 

truncate table prj_project;

(4)恢復外來鍵約束的sql

方式一:

alter table '要恢復的表名'enableconstraint '約束名稱';

alter table prj_project enable constraint sys_c0018174; 

方式二:

alter table '要恢復的表名' modify constraint '約束名稱' enable;

alter table prj_project modify constraint pk_prj_project enable;

2)刪除所有表資料的sql

select 'truncate table ' + name from sysobjects where type='u'

3)恢復所有表約束的sql

select 'alter table ' + name + ' check constraint all' from sysobjects where type='u'

4)刪除某字段的約束

declare @name varchar(100)

--df為約束名稱字首

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%'

--刪除約束

alter table 表名 drop constraint @name

--為字段新增新預設值和約束

alter table 表名 add constraint @name  default (0) for [欄位名]

--刪除約束

alter table tablename drop constraint 約束名

--修改表中已經存在的列的屬性(不包括約束,但可以為主鍵或遞增或唯一)

alter table tablename 

alter column 列名 int not null

--新增列的約束

alter table tablename

add constraint df_tablename_列名 default(0) for 列名

--新增範圍約束

alter table  tablename  add  check(性別 in ('m','f'))

130 修改表時 新增 刪除 約束

新增約束 列級約束修改不能取名,表級約束修改才能取名 非空 alter table stuinfo modify column stunamne varchar 20 not null 預設約束 alter table stuinfo modify column age int default18 ...

SQL 插入資料時,遇上存在的資料

mysql中常用的三種插入資料的語句 insert into 表示插入資料,資料庫會檢查主鍵,如果出現重複會報錯 replace into 表示插入替換資料,需求表中有primarykey或者unique索引,如果資料庫已經存在資料,則用新資料替換,如果沒有資料效果則和insert into一樣 i...

SQL表的約束

create table students s char 8 not null unique,sname char 10 s char 2 constraint cts check s 男 or s 女 sage integer check sage 1 and sage 150 d char 2 ...