A. sql server刪除主表的一條數據,外鍵表的數據全沒了
--使用SYSREFERENCES
--刪除外鍵
set xact_abort on
begin tran
DECLARE @SQL VARCHAR(99)
DECLARE CUR_FK CURSOR LOCAL FOR
SELECT 'alter table ['+ OBJECT_NAME(FKEYID) + '] drop constraint ' + OBJECT_NAME(CONSTID) FROM SYSREFERENCES
--刪除所有外鍵
OPEN CUR_FK
FETCH CUR_FK INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_FK INTO @SQL
END
CLOSE CUR_FK
DEALLOCATE CUR_FK
-- 刪除拆腔所有表
DECLARE CUR_TAB CURSOR LOCAL FOR
SELECT 'DROP TABLE '+ NAME FROM SYSOBJECTS WHERE XTYPE='U' -- AND NAME LIKE 'xx%'
OPEN CUR_TAB
FETCH CUR_TAB INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_TAB INTO @SQL
END
CLOSE CUR_TAB
DEALLOCATE CUR_TAB
commit tran
--使用sys.foreign_keys
--disable and enable 外鍵
這里解釋下 { CHECK | NOCHECK } CONSTRAINT
Specifies that constraint_name is enabled or disabled. This option can only be used with FOREIGN KEY and CHECK constraints. When NOCHECK is specified, the constraint is disabled and future inserts or updates to the column are not validated against the constraint conditions. DEFAULT, PRIMARY KEY, and UNIQUE constraints cannot be disabled.
上面的解釋是,NOCHECK對應於disable, CHECK則對應於enable
select
'ALTER TABLE '+o.name+' NOCHECK CONSTRAINT '+fk.name+';' AS Command
from
sys.foreign_keys fk
JOIN sys.all_objects o ON (fk.parent_object_id=o.object_id)
具體會有多少條記錄,取決於你的資料庫裡面,有多少個外鍵了。
然後復制梁慧結果, 粘貼旅渣衫出來執行. 就停用 外鍵約束了.
再刪除數據
數據刪除好了, 再啟用外鍵約束
select
'ALTER TABLE ' + o.name + ' CHECK CONSTRAINT ' + fk.name + ';' AS Command
from
sys.foreign_keys fk
JOIN sys.all_objects o ON (fk.parent_object_id = o.object_id)
和前面的一樣, 把查詢出來的結果, 復制一下, 然後粘貼出來去執行.
--使用sys.foreign_key_columns
--查出外鍵
select name
from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id
where f.parent_object_id=object_id('表名')
--刪除外鍵
alter table 表名 drop constraint 外簡名
B. sql server怎樣刪除外鍵約束
用這個跟:alter table 表名稱 drop constraint 外鍵的名稱
使用如下SQL語句查詢出表中外鍵約束名稱:
1 select name 2 from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id 3 where f.parent_object_id=object_id('表名')
執行如下SQL語句刪除鏈返即可。
1 alter table 表名 drop constraint 外鍵約束名
(2)sql刪除所有外鍵擴展閱讀:
注族手意事項
鍵約束可雙擊關系線添加兆喚嫌外鍵約束,外鍵約束有四種不同的選項:CASCADE, SET NULL, NO ACTION, RESTRICT。
1、CASCADE : 從父表中刪除或更新對應的行,同時自動的刪除或更新自表中匹配的行。[ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持。
2、SET NULL: 從父表中刪除或更新對應的行,同時將子表中的外鍵列設為空。[注意,這些在外鍵列沒有被設為NOT NULL時才有效。ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持。
3、NO ACTION: InnoDB拒絕刪除或者更新父表。
4、RESTRICT: 拒絕刪除或者更新父表。
C. sqlserver怎麼刪除有外鍵關聯的數據
--使用SYSREFERENCES
--刪除外鍵
set xact_abort on
begin tran
DECLARE @SQL VARCHAR(99)
DECLARE CUR_FK CURSOR LOCAL FOR
SELECT 'alter table ['+ OBJECT_NAME(FKEYID) + '] drop constraint ' + OBJECT_NAME(CONSTID) FROM SYSREFERENCES
--刪除所有外鍵
OPEN CUR_FK
FETCH CUR_FK INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_FK INTO @SQL
END
CLOSE CUR_FK
DEALLOCATE CUR_FK
-- 刪除所有表
DECLARE CUR_TAB CURSOR LOCAL FOR
SELECT 'DROP TABLE '+ NAME FROM SYSOBJECTS WHERE XTYPE='U' -- AND NAME LIKE 'xx%'
OPEN CUR_TAB
FETCH CUR_TAB INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_TAB INTO @SQL
END
CLOSE CUR_TAB
DEALLOCATE CUR_TAB
commit tran
--使用sys.foreign_keys
--disable and enable 外鍵
這里解釋下 { CHECK | NOCHECK } CONSTRAINT
Specifies that constraint_name is enabled or disabled. This option can only be used with FOREIGN KEY and CHECK constraints. When NOCHECK is specified, the constraint is disabled and future inserts or updates to the column are not validated against the constraint conditions. DEFAULT, PRIMARY KEY, and UNIQUE constraints cannot be disabled.
上面的解釋是,NOCHECK對應於disable, CHECK則對應於enable
select
'ALTER TABLE '+o.name+' NOCHECK CONSTRAINT '+fk.name+';' AS Command
from
sys.foreign_keys fk
JOIN sys.all_objects o ON (fk.parent_object_id=o.object_id)
具體會有多少條記錄,取決於你的資料庫裡面,有多少個外鍵了。
然後復制結果, 粘貼出來執行. 就停用 外鍵約束了.
再刪除數據
數據刪除好了, 再啟用外鍵約束
select
'ALTER TABLE ' + o.name + ' CHECK CONSTRAINT ' + fk.name + ';' AS Command
from
sys.foreign_keys fk
JOIN sys.all_objects o ON (fk.parent_object_id = o.object_id)
和前面的一樣, 把查詢出來的結果, 復制一下, 然後粘貼出來去執行.
--使用sys.foreign_key_columns
--查出外鍵
select name
from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id
where f.parent_object_id=object_id('表名')
--刪除外鍵
alter table 表名 drop constraint 外簡名
D. SQL server 刪除全部外鍵
--查出外鍵
select name
from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id
where f.parent_object_id=object_id('表名')
--刪除外鍵
alter table 表名 drop constraint 外簡名
E. 如何刪除資料庫中所有外鍵關系
如何刪除資料庫中所有外鍵關系
--刪除主鍵
alter table Stu_PkFk_S drop constraint PK_S
刪除SQL SERVER外鍵
alter table Stu_PkFk_Sc drop constraint FK_s
關系型資料庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為一個主鍵
比如
學生表(學號,姓名,性別,班級)
其中每個學生的學號是唯一的,學號就是一個主鍵
課程表(課程編號,課程名,學分)
其中課程編號是唯一的,課程編號就是一個主鍵
成績表(學號,課程號,成績)
成績表中單一一個屬性無法唯一標識一條記錄,學號和課程號的組合才可以唯一標識一條記錄,所以 學號和課程號的屬性組是一個主鍵
F. SQL 怎樣刪除有外鍵約束的表
刪除外鍵約束的表,首先要刪除外鍵關聯,然後才可以刪除表。
如:
1、創建表author
:
CREATE TABLE [dbo].[author]
([ID] [bigint] NOT NULL PRIMARY KEY,
[AuthorName] [char] (10) NULL,
[address] [char] (480) NULL,
[introction] [ntext] NULL)
2、創建myBBS表:
CREATE TABLE [dbo].[myBBS] (
[ID] [bigint] IDENTITY (1, 1) NOT NULL,
[authorId] [bigint] NOT NULL,
[Title] [char] (40) NULL,
[Date_of_Created] [datetime] NULL,
[Abstract] [char] (480) NULL,
[Content] [ntext] NULL)
3、創建外鍵關系:
alter table dbo.mybbs add constraint FK_mybbs_author
foreign key (authorId)
references dbo.author([id]) ON UPDATE CASCADE ON DELETE CASCADE
4、在刪除表前,要刪除外鍵,語法如下:
alter table dbo.mybbs drop constraint FK_mybbs_author
5、然後再刪除表:
drop table [dbo].[myBBS]
G. 如何用sql語句刪除外鍵約束
用sql語句刪除外鍵約束的具體步驟如下:
我們需要准備的材料分別是:電腦、SQL SERVER 2008。
1、首先我們用SQL SERVER 2008打開需要刪除外鍵約束的表,滑鼠右鍵點擊左側的「dbo」選項選擇「設擊」。
H. 如何刪除sql中帶外鍵的表數據
為什麼一定要一句話呢?一個sql語句不能同時刪除兩張表,除非通過外鍵級聯刪除或者觸發器,最正常的做法當然是寫成2個sql語句,然後用一個trans來保證數據一致性,如果非要用一個sql語句,可以有一個變通方法,寫一側存儲過程,刪除兩張表,然後寫的一句sql是執行這個存儲過程