Home 綜合 怎樣刪除存在主外來鍵關係的資料,怎樣編寫SQL語句

怎樣刪除存在主外來鍵關係的資料,怎樣編寫SQL語句

0

  如果你的表裡面 使用了級聯關係 你刪除主表時 子表也就刪除了。 如果咩有的話 你只能寫where語句比較了之前如果有級聯關係(級聯關係:主鍵執行的操作同時影響外來鍵)的話,只需要執行delete 列名 from 表名 where 約束條件

  最保險的方法就是根據主外來鍵,先從子表中刪除,然後再把主表的記錄刪除

  如何用sql語句刪除外來鍵約束

  用sql語句刪除外來鍵約束的具體步驟如下:

  我們需要準備的材料分別是:電腦、sql server 2008。

  1、首先我們用sql server 2008開啟需要刪除外來鍵約束的表,滑鼠右鍵點選左側的“dbo”選項選擇“設擊”。

  2、然後我們在該頁面中左鍵點選選擇“刪除主鍵”選項。

  3、然後我們在彈出來的該頁面中左鍵單擊選擇“是”就即可刪除。

  先將存在外來鍵約束的欄位的外來鍵用

  alter table 從表

  add constraint fk_xx foreign key(從表欄位) references 主表(主表欄位)

  goalter table 從表

  drop constraint fk_xxgo

  需要兩步 1,alter table 從表 drop foreign key 約束名 ; 2.alter table 從表 drop key 約束名;

  alter table 表名稱 drop constraint 外來鍵的名稱

  怎樣一次清空sql server中存在外來鍵關係的所有資料

  在設定它們之間的主外來鍵時 設定一下刪除規則 為層疊..然後刪除主鍵資料 它的所有外來鍵資料都會刪掉

  是隻有存在外來鍵的要刪除還是所有資料都刪除啊

  sp_msforeachtable @command1=’delete from ?’

  可以刪除當前庫所有表的資料,並且保留表之間的外來鍵等關聯關係

  sql 怎樣刪除有外來鍵約束的表

  刪除外來鍵約束的表,首先要刪除外來鍵關聯,然後才可以刪除表。

  如:1、建立表author :

  create?table?[dbo].[author]

  ([id]?[bigint]?not?null?primary?key,

  [authorname]?[char]?(10)?null,

  [address]?[char]?(480)?null,

  [introduction]?[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]

  先找出你的外來鍵所在用下面的語句:

  –查詢一個表的所有外來鍵:

  select 主鍵列id=b.rkey

  ,主鍵列名=(select name from syscolumns where colid=b.rkey and id=b.rkeyid)

  ,外來鍵表id=b.fkeyid

  ,外來鍵表名稱=object_name(b.fkeyid)

  ,外來鍵列id=b.fkey

  ,外來鍵列名=(select name from syscolumns where colid=b.fkey and id=b.fkeyid)

  ,級聯更新=objectproperty(a.id,’cnstisupdatecascade’)

  ,級聯刪除=objectproperty(a.id,’cnstisdeletecascade’)

  from sysobjects a

  join sysforeignkeys b on a.id=b.constid

  join sysobjects c on a.parent_obj=c.id

  where a.xtype=’f’ and c.xtype=’u’

  and object_name(b.rkeyid)=’students’

  然後刪除對應的外來鍵~

  必須要先刪除外來鍵表,才可刪除主表

  sql 刪除帶外來鍵約束的表的語句是什麼
50

  擁有主鍵的表稱為主表,擁有外來鍵的表稱為從表,從表可以直接刪除,不受限制,但主表無法在從表還存在的情況下直接刪除。

  另外,根據樓主的意思,我猜想你可能想問的是有外碼關聯的資料刪除的問題。以下簡述:

  通常情況下,從表中外來鍵所在欄位的資料取值只能取主鍵中存在的值或者取空值,從表中的資料可以隨時刪除,而主表中的資料如果被從表所參照,則不能直接刪除,如果想直接刪除主表中被參照的資料,需要在建立外來鍵時指定on delete cascade或者on delete set null,即

  foreign key(從表中的某個欄位) references 主表(主鍵) on delete cascade

  或者foreign key(從表中的某個欄位) references 主表(主鍵) on delete set null

  其中第一種方法表示刪除主表中的資料時,從表中對應資料一起被強制刪除;

  第二種方法表示刪除主表中的資料時,從表中對應資料設定為null

  最後要注意的一點,這兩個短語並非所有資料庫管理系統都支援,印象中db2、oracle和sql server都支援,mysql沒試過,不知道你用哪種資料庫,最好在你的系統中親自試一下。

  以上僅供參考。

  刪除語句如下:

  alter?table?表名?drop?constraint?外來鍵約束名

  使用如下sql語句查詢出表中外來鍵約束名稱:

  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(‘表名’)

  各個資料庫有細微區別,以上提供的為sqlserver的

  刪除外來鍵語句:

  現刪除關聯的外來鍵名,才能再刪除外來鍵欄位;

  alter table 表名 drop foreign key 外來鍵關聯名;

  alter table 表名 drop column ‘列名’