當前位置:首頁 » 編程語言 » sql外鍵onupdate
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql外鍵onupdate

發布時間: 2022-04-26 03:56:11

sql如何建立外鍵請教高手了

資料庫mysql

建立外鍵的前提: 本表的列必須與外鍵類型相同(外鍵必須是外表主鍵)。

外鍵作用: 使兩張表形成關聯,外鍵只能引用外表中的列的值!

指定主鍵關鍵字: foreign key(列名)

引用外鍵關鍵字: references <外鍵表名>(外鍵列名)

事件觸發限制: on delete和on update , 可設參數cascade(跟隨外鍵改動), restrict(限制外表中的外鍵改動),set Null(設空值),set Default(設默認值),[默認]no action

例如:

outTable表 主鍵 id 類型 int

創建含有外鍵的表:
create table temp(
id int,
name char(20),
foreign key(id) references outTable(id) on delete cascade on update cascade);

說明:把id列 設為外鍵 參照外表outTable的id列 當外鍵的值刪除 本表中對應的列篩除 當外鍵的值改變 本表中對應的列值改變。

自己實踐 才能完全了解外鍵的作用 關鍵是:事件觸發限制的作用

⑵ 怎麼在SQL中設置外鍵

sql server中建立外鍵約束有3中方式:enterprise manager中,tables,design table,設置table的properties,可以建立constraint, reference key;enterprise manager中,diagrams, new diagrams,建立兩個表的關系;直接用transact sql語句。

1、三個方法都需要先建立數據表。

1)創建表author :

create table [dbo].[author] (
[id] [bigint] not null ,
[authorname] [char] (10) null ,
[address] [char] (480) null ,
[introction] [ntext] null
)

2)創建表mybbs:

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

2、設置表mybbs中的authorid為外鍵,參照author表的id欄位,直接使用transact sql語句,過程如下:

1)增加表mybbs(authorid)的外鍵約束fk_mybbs_author,表mybbs中的authorid受表author中的主鍵id約束:

begin transaction
alter table dbo.mybbs add constraint fk_mybbs_author
foreign key (authorid)
references dbo.author([id]) on update cascade on delete cascade

2)刪除外鍵約束fk_mybbs_author:
--alter table dbo.mybbs drop constraint fk_mybbs_author
--rollback
commit transaction

上面on update cascade,on delete cascade兩個選項,指明以後author表的id欄位有delete,update操作時,mybbs表中的id也會被級聯刪除或更新。如果沒有選中,是不可以對author表中已被mybbs表關聯的id進行update或者delete操作的。

拓展資料:

SQL的主鍵和外鍵的作用:

1、插入非空值時,如果主鍵表中沒有這個值,則不能插入。

2、更新時,不能改為主鍵表中沒有的值。

3、刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯刪除還是拒絕刪除。

4、更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。

簡而言之,SQL的主鍵和外鍵就是起約束作用。

⑶ on update cascade 和on delete cascade 作用區別

這是資料庫外鍵定義的一個可選項,用來設置當主鍵表中的被參考列的數據發生變化時,外鍵表中響應欄位的變換規則的。update 則是主鍵表中被參考欄位的值更新,delete是指在主鍵表中刪除一條記錄:
on update 和 on delete 後面可以跟的詞語有四個
no action , set null , set default ,cascade
no action 表示 不做任何操作,
set null 表示在外鍵表中將相應欄位設置為null
set default 表示設置為默認值
cascade 表示級聯操作,就是說,如果主鍵表中被參考欄位更新,外鍵表中也更新,主鍵表中的記錄被刪除,外鍵表中改行也相應刪除

⑷ 用SQL語句創表的同時寫外鍵

  1. 外鍵一定要是二個表;

    例子如下:


  2. CREATETABLEoutTable{
    idint,
    primaiykey(id)
    }
  3. 創建含有外鍵的表:
    createtabletemp
    (
    idint,
    namevarchar(20)
    )
    ALTERTABLEtempADD
    constraintwc
    foreignkey(id)
    referencesoutTable(id)
    onupdatecascade

⑸ SQL表與表之間建立外鍵約束之後,怎麼建立連級更新和刪除

兩種方法,一種是sql語句,一種是用圖形界面操作。
sql語句寫法:
altertableSZ_Picture
addconstraintFK_SZ_PICTU_RELATIONS_SZ_PICTUforeignkey(pictureTypeId)
referencesSZ_PictureType(pictureTypeId)
;
其中on
update
cascade
on
delete
cascade代表級聯更新和級聯刪除。
圖形界面操作方法:
首先在PDM中兩個表的relationship上雙擊,彈出如下對話框,選擇Integrity
選項卡,將Update
constraint
和Delete
constraint下的cascade選上即可。

⑹ My SQL Front 無法改變外鍵約束的on delete和on update 屬性是怎麼回事

檢查一下表引擎是否innodb,默認是myisam引擎。

innodb引擎支持外鍵的

⑺ sql怎麼設置外鍵

sql server中建立外鍵約束有3中方式:enterprise manager中,tables,design table,設置table的properties,可以建立constraint, reference key;enterprise manager中,diagrams, new diagrams,建立兩個表的關系;直接用transact sql語句。

1、三個方法都需要先建立數據表。

1)創建表author :

create table [dbo].[author] (
[id] [bigint] not null ,
[authorname] [char] (10) null ,
[address] [char] (480) null ,
[introction] [ntext] null
)

2)創建表mybbs:

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

2、設置表mybbs中的authorid為外鍵,參照author表的id欄位,直接使用transact sql語句,過程如下:

1)增加表mybbs(authorid)的外鍵約束fk_mybbs_author,表mybbs中的authorid受表author中的主鍵id約束:

begin transaction
alter table dbo.mybbs add constraint fk_mybbs_author
foreign key (authorid)
references dbo.author([id]) on update cascade on delete cascade

2)刪除外鍵約束fk_mybbs_author:
--alter table dbo.mybbs drop constraint fk_mybbs_author
--rollback
commit transaction

上面on update cascade,on delete cascade兩個選項,指明以後author表的id欄位有delete,update操作時,mybbs表中的id也會被級聯刪除或更新。如果沒有選中,是不可以對author表中已被mybbs表關聯的id進行update或者delete操作的。

拓展資料:

SQL的主鍵和外鍵的作用:

1、插入非空值時,如果主鍵表中沒有這個值,則不能插入。

2、更新時,不能改為主鍵表中沒有的值。

3、刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯刪除還是拒絕刪除。

4、更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。

簡而言之,SQL的主鍵和外鍵就是起約束作用。

⑻ sql創建外鍵語句

--
創建測試主表.
ID
是主鍵.
CREATE
TABLE
test_main
(
id
INT,
value
VARCHAR(10),
PRIMARY
KEY(id)
);
--
創建測試子表.
CREATE
TABLE
test_sub
(
id
INT,
main_id
INT,
value
VARCHAR(10),
PRIMARY
KEY(id)
);
默認外鍵約束方式
ALTER
TABLE
test_sub
ADD
CONSTRAINT
main_id_cons
FOREIGN
KEY
(main_id)
REFERENCES
test_main;
DELETE
CASCADE
方式
--
創建外鍵(使用
ON
DELETE
CASCADE
選項,刪除主表的時候,同時刪除子表)
ALTER
TABLE
test_sub
ADD
CONSTRAINT
main_id_cons
FOREIGN
KEY
(main_id)
REFERENCES
test_main
ON
DELETE
CASCADE;
UPDATE
CASCADE方式
--
創建外鍵(使用
ON
UPDATE
CASCADE
選項,更新主表的主鍵時候,同時更新子表外鍵)
ALTER
TABLE
test_sub
ADD
CONSTRAINT
main_id_cons
FOREIGN
KEY
(main_id)
REFERENCES
test_main
ON
UPDATE
CASCADE;
SET
NULL方式
--
創建外鍵(使用
ON
DELETE
SET
NULL
選項,刪除主表的時候,同時將子表的
main_id
設置為
NULL)
ALTER
TABLE
test_sub
ADD
CONSTRAINT
main_id_cons
FOREIGN
KEY
(main_id)
REFERENCES
test_main
ON
DELETE
SET
NULL;

⑼ SQL資料庫外鍵

創建外鍵時可以指定級聯刪除選項,設置後主表數據被刪除,從表數據也會被刪除,反之則不然。

參考:http://hi..com/zagelover/item/c0118adda8f92ef592a97475

sql外鍵約束NO ACTION,CASCADE,SET NULL,SET DEFAULT

NO ACTION
指定如果試圖刪除/修改某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則產生錯誤並回滾 DELETE/UPDATE語句。
CASCADE、SET NULL 和 SET DEFAULT
允許通過刪除或更新鍵值來影響指定具有外鍵關系的表,這些外鍵關系可追溯到在其中進行修改的表。如果為目標表也定義了級聯引用操作,那麼指定的級聯操作也將應用於刪除或更新的那些行。不能為具有 timestamp 列的外鍵或主鍵指定 CASCADE。
ON DELETE CASCADE
指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則也將刪除所有包含那些外鍵的行。
ON UPDATE CASCADE
指定如果試圖更新某一行中的鍵值,而該行的鍵值被其他表的現有行中的外鍵所引用,則組成外鍵的所有值也將更新到為該鍵指定的新值。 (如果 timestamp 列是外鍵或被引用鍵的一部分,則不能指定 CASCADE。 )
ON DELETE SET NULL
指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為 NULL。目標表的所有外鍵列必須可為空值,此約束才可執行。
ON UPDATE SET NULL
指定如果試圖更新某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為 NULL。目標表的所有外鍵列必須可為空值,此約束才可執行。
ON DELETE SET DEFAULT
指 定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為它們的默認值。目標表的所有外鍵列必須具 有默認值定義,此約束才可執行。如果某個列可為空值,並且未設置顯式的默認值,則會使用 NULL 作為該列的隱式默認值。因 ON DELETE SET DEFAULT 而設置的任何非空值在主表中必須有對應的值,才能維護外鍵約束的有效性。
ON UPDATE SET DEFAULT
指 定如果試圖更新某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為它們的默認值。目標表的所有外鍵列必須具 有默認值定義,此約束才可執行。如果某個列可為空值,並且未設置顯式的默認值,則會使用 NULL 作為該列的隱式默認值。因 ON UPDATE SET DEFAULT 而設置的任何非空值在主表中必須有對應的值,才能維護外鍵約束的有效性。