日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

删除SQL表数据时存在约束的解决方法

發布時間:2023/12/31 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 删除SQL表数据时存在约束的解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

select constraint_name, constraint_type, status from user_constraints where table_name='PRJ_PROJECT';

(2)禁止外鍵約束的SQL

? ?方式一:
? ? ? ?alter table '表名'?disable constraint '約束名稱';?

? ? ? ?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 '要恢復的表名'?enable constraint '約束名稱';

? ? ? ?alter table PRJ_PROJECT enable constraint SYS_C0018174;?

? ?方式二:

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

? ? ? ?alter table PRJ_PROJECT modify constraint PK_PRJ_PROJECT enable;


對創建及刪除一些表、字段、列及范圍的約束的相關操作進行了總結整理,具體如下:

創建與刪除SQL約束或字段約束

1)禁止所有表約束的SQL
select?'alter?table?'?+ name +?'?nocheck?constraint?all'?from?sysobjects?where?type='U'

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

總結

以上是生活随笔為你收集整理的删除SQL表数据时存在约束的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。