第1關(guān) 執(zhí)行 CREATE USER 創(chuàng)建以2022100904為用戶名的用戶,同時(shí)設(shè)置其密碼為root1234
任務(wù)描述
執(zhí)行CREATE USER
創(chuàng)建以2022100904
為用戶名的用戶,同時(shí)設(shè)置其密碼為root1234
相關(guān)知識(shí)
創(chuàng)建用戶的語法為如下:
CREATE USER '用戶名'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼';
SELECT mysql.user.Host, mysql.user.User FROM mysql.user WHERE USER = '2022100904';
第2關(guān) 給予創(chuàng)建的用戶2022100904在mydata數(shù)據(jù)庫中授予"J" 表 SELECT 權(quán)限
任務(wù)描述
給予創(chuàng)建的用戶2022100904
在mydata
數(shù)據(jù)庫中授予"J"
表SELECT
權(quán)限(注意創(chuàng)建權(quán)限時(shí)的用戶名為'用戶名'@'localhost'
),不允許轉(zhuǎn)授此權(quán)限給其它用戶。相關(guān)知識(shí)
1、現(xiàn)已創(chuàng)建以2022100904
為用戶名的用戶。
2、現(xiàn)在mydata
數(shù)據(jù)庫中已構(gòu)建J
表。
3、使用GRANT
語句將對象權(quán)限授予用戶和角色。
對象權(quán)限的授權(quán)語句語法為:
GRANT <特權(quán)> ON [<對象類型>] <對象> TO <用戶或角色>{,<用戶或角色>} [WITH GRANT OPTION];
<特權(quán)>::= ALL [PRIVILEGES] | <動(dòng)作> {, <動(dòng)作>}
<動(dòng)作>::= SELECT[(<列清單>)] | INSERT[(<列清單>)] | UPDATE[(<列清單>)] | DELETE | REFERENCES[(<列清單>)] | EXECUTE| READ| WRITE| USAGE
<列清單>::= <列名> {,<列名>}
<對象類型>::= TABLE | VIEW | PROCEDURE | PACKAGE | CLASS | TYPE | SEQUENCE | DIRECTORY | DOMAIN
<對象> ::= [<模式名>.]<對象名>
<對象名> ::= <表名> | <視圖名> | <存儲(chǔ)過程/函數(shù)名> |<包名> |<類名> |<類型名> |<序列名> | <目錄名> | <域名>
<用戶或角色>::= <用戶名> | <角色名>
使用說明:
(1)授權(quán)者必須是具有對應(yīng)對象權(quán)限以及其轉(zhuǎn)授權(quán)的用戶;
(2)如未指定對象的<模式名>,模式為授權(quán)者所在的模式。DIRECTORY
為非模式對象,沒有模式;
(3)如設(shè)定了對象類型,則該類型必須與對象的實(shí)際類型一致,否則會(huì)報(bào)錯(cuò);
(4)帶WITH GRANT OPTION
授予權(quán)限給用戶時(shí),則接受權(quán)限的用戶可轉(zhuǎn)授此權(quán)限;
(5)不帶列清單授權(quán)時(shí),如果對象上存在同類型的列權(quán)限,會(huì)全部自動(dòng)合并;
(6)對于用戶所在的模式的表,用戶具有所有權(quán)限而不需特別指定。 當(dāng)授權(quán)語句中使用了ALL PRIVILEGES
時(shí),會(huì)將指定的數(shù)據(jù)庫對象上所有的對象權(quán)限都授予被授權(quán)者。
GRANT SELECT ON TABLE J TO '2022100904'@'localhost';
第3關(guān) 給予創(chuàng)建的用戶2022100904、2022100908授予"J"表 的ALL PRIVILEGES權(quán)限
任務(wù)描述
給予創(chuàng)建的用戶2022100904
、2022100908
在mydata
數(shù)據(jù)庫中授予"J"
表ALL PRIVILEGES
權(quán)限(注意創(chuàng)建權(quán)限時(shí)的用戶名為'用戶名'@'localhost'
),不允許轉(zhuǎn)授此權(quán)限給其它用戶。
GRANT ALL ON TABLE J TO '2022100904'@'localhost','2022100908'@'localhost';
第4關(guān) 給予創(chuàng)建的用戶2022100904在mydata數(shù)據(jù)庫中授予“J”表的UPDATE和INSERT權(quán)限
任務(wù)描述
給予創(chuàng)建的用戶2022100904
在mydata
數(shù)據(jù)庫中授予“J”
表的UPDATE
和INSERT
權(quán)限,允許轉(zhuǎn)授此權(quán)限給其它用戶。
相關(guān)知識(shí)
1、現(xiàn)已創(chuàng)建用戶名為2022100904
的用戶。
2、工程項(xiàng)目表J由工程項(xiàng)目代碼(JNO
)、工程項(xiàng)目名(JNAME
)、工程項(xiàng)目所在城市(CITY
)組成。J
表如下圖:
現(xiàn)已在mydata
數(shù)據(jù)庫中已構(gòu)建J
表,結(jié)構(gòu)信息如下:
3、使用GRANT
語句將對象權(quán)限授予用戶和角色。
對象權(quán)限的授權(quán)語句語法為:
GRANT <特權(quán)> ON [<對象類型>] <對象> TO <用戶或角色>{,<用戶或角色>} [WITH GRANT OPTION];
<特權(quán)>::= ALL [PRIVILEGES] | <動(dòng)作> {, <動(dòng)作>}
<動(dòng)作>::= SELECT[(<列清單>)] | INSERT[(<列清單>)] | UPDATE[(<列清單>)] | DELETE | REFERENCES[(<列清單>)] | EXECUTE| READ| WRITE| USAGE
<列清單>::= <列名> {,<列名>}
<對象類型>::= TABLE | VIEW | PROCEDURE | PACKAGE | CLASS | TYPE | SEQUENCE | DIRECTORY | DOMAIN
<對象> ::= [<模式名>.]<對象名>
<對象名> ::= <表名> | <視圖名> | <存儲(chǔ)過程/函數(shù)名> |<包名> |<類名> |<類型名> |<序列名> | <目錄名> | <域名>
<用戶或角色>::= <用戶名> | <角色名>
GRANT UPDATE,INSERT
ON TABLE J
TO '2022100904'@'localhost'
WITH GRANT OPTION;
第5關(guān) 回收用戶2022100904在mydata數(shù)據(jù)庫中授予的 “J” 表 SELECT權(quán)限
任務(wù)描述
回收用戶2022100904
在mydata
數(shù)據(jù)庫中授予的"J"
表SELECT
權(quán)限(回收權(quán)限時(shí)的用戶名為'用戶名'@'localhost'
)。
相關(guān)知識(shí)
1、現(xiàn)已創(chuàng)建以2022100904
為用戶名的用戶。
2、現(xiàn)在mydata
數(shù)據(jù)庫中已構(gòu)建J
表。
3、已授予用戶2022100904
在mydata
數(shù)據(jù)庫中的"J"
表SELECT
權(quán)限
4、使用REVOKE
語句回收已授予的數(shù)據(jù)庫對象的權(quán)限
對象權(quán)限的回收語句語法為:
REVOKE [GRANT OPTION FOR] <特權(quán)> ON [<對象類型>]<對象> FROM <用戶或角色> {,<用戶或角色>} [<回收選項(xiàng)>];
<特權(quán)>::= ALL [PRIVILEGES] | <動(dòng)作> {, <動(dòng)作>}
<動(dòng)作>::= SELECT | INSERT | UPDATE | DELETE | REFERENCES | EXECUTE | READ | WRITE | USAGE
<對象類型>::= TABLE | VIEW | PROCEDURE | PACKAGE | CLASS | TYPE | SEQUENCE | DIRECTORY | DOMAIN
<對象> ::= [<模式名>.]<對象名>
<對象名> ::= <表名> | <視圖名> | <存儲(chǔ)過程/函數(shù)名> |<包名> |<類名> |<類型名> | <序列名> | <目錄名> | <域名>
<用戶或角色>::= <用戶名> | <角色名>
<回收選項(xiàng)> ::= RESTRICT | CASCADE
使用說明:
(1)權(quán)限回收者必須是具有回收相應(yīng)對象權(quán)限以及轉(zhuǎn)授權(quán)的用戶;
(2)回收時(shí)不能帶列清單,若對象上存在同類型的列權(quán)限,則一并被回收;
(3)使用GRANT OPTION FOR
選項(xiàng)的目的是收回用戶或角色權(quán)限轉(zhuǎn)授的權(quán)利,而不回收用戶或角色的權(quán)限;并且GRANT OPTION FOR
選項(xiàng)不能和RESTRICT
一起使用,否則會(huì)報(bào)錯(cuò);
(4)在回收權(quán)限時(shí),設(shè)定不同的回收選項(xiàng),其意義不同。 若不設(shè)定回收選項(xiàng),無法回收授予時(shí)帶WITH GRANT OPTION
的權(quán)限,但也不會(huì)檢查要回收的權(quán)限是否存在限制; 若設(shè)定為RESTRICT
,無法回收授予時(shí)帶WITH GRANT OPTION
的權(quán)限,也無法回收存在限制的權(quán)限,如角色上的某權(quán)限被別的用戶用于創(chuàng)建視圖等; 若設(shè)定為CASCADE
,可回收授予時(shí)帶或不帶WITH GRANT OPTION
的權(quán)限,若帶WITH GRANT OPTION
還會(huì)引起級聯(lián)回收。利用此選項(xiàng)時(shí)也不會(huì)檢查權(quán)限是否存在限制。另外,利用此選項(xiàng)進(jìn)行級聯(lián)回收時(shí),若被回收對象上存在另一條路徑授予同樣權(quán)限給該對象時(shí),則僅需回收當(dāng)前權(quán)限。
用戶A
給用戶B
授權(quán)且允許其轉(zhuǎn)授,用戶B
將權(quán)限轉(zhuǎn)授給用戶C
。當(dāng)用戶A
回收用戶B
的權(quán)限的時(shí)候必須加CASCADE
回收選項(xiàng)。
REVOKE SELECT
ON TABLE J
FROM '2022100904'@'localhost';
第6關(guān) 回收用戶2022100904、2022100908在mydata數(shù)據(jù)庫的中授予 的J表ALL PRIVILEGES權(quán)限
任務(wù)描述
回收賬號2022100904
、2022100908
在mydata
數(shù)據(jù)庫的中授予 的J
表ALL
PRIVILEGES
權(quán)限(注意回收權(quán)限時(shí)的用戶名為'用戶名'@'localhost'
)
REVOKE ALL
ON TABLE J
FROM '2022100904'@'localhost','2022100908'@'localhost';
第7關(guān) 回收用戶2022100904在mydata數(shù)據(jù)中授予的“J”表UPDATE和INSERT的權(quán)限
任務(wù)描述
回收用戶2022100904
在mydata
數(shù)據(jù)中授予的“J”
表UPDATE
和INSERT
的權(quán)限。(注意回收權(quán)限時(shí)的用戶名為'用戶名'@'localhost'
)
REVOKE UPDATE,INSERT
ON TABLE J
FROM '2022100904'@'localhost';
第8關(guān) 創(chuàng)建角色名為 R1的角色
任務(wù)描述
創(chuàng)建角色'R1'
相關(guān)知識(shí)
創(chuàng)建用戶的語法為如下:
CREATE ROLE '角色名';
CREATE ROLE 'R1';
第9關(guān) 給予創(chuàng)建的角色R1在mydata數(shù)據(jù)庫中授予"J" 表 的SELECT 、UPDATE、INSERT權(quán)限
任務(wù)描述
給予創(chuàng)建的角色R1
在mydata
數(shù)據(jù)庫中授予"J"
表 的SELECT
、UPDATE
、INSERT
權(quán)限。
相關(guān)知識(shí)
1、現(xiàn)已創(chuàng)建角色R1
。
2、現(xiàn)在mydata
數(shù)據(jù)庫中已構(gòu)建J
表。
3、使用GRANT
語句將對象權(quán)限授予用戶和角色。
對象權(quán)限的授權(quán)語句語法為:
GRANT <特權(quán)> ON [<對象類型>] <對象> TO <用戶或角色>{,<用戶或角色>} [WITH GRANT OPTION];
<特權(quán)>::= ALL [PRIVILEGES] | <動(dòng)作> {, <動(dòng)作>}
<動(dòng)作>::= SELECT[(<列清單>)] | INSERT[(<列清單>)] | UPDATE[(<列清單>)] | DELETE | REFERENCES[(<列清單>)] | EXECUTE| READ| WRITE| USAGE
<列清單>::= <列名> {,<列名>}
<對象類型>::= TABLE | VIEW | PROCEDURE | PACKAGE | CLASS | TYPE | SEQUENCE | DIRECTORY | DOMAIN
<對象> ::= [<模式名>.]<對象名>
<對象名> ::= <表名> | <視圖名> | <存儲(chǔ)過程/函數(shù)名> |<包名> |<類名> |<類型名> |<序列名> | <目錄名> | <域名>
<用戶或角色>::= <用戶名> | <角色名>
使用說明:
(1)授權(quán)者必須是具有對應(yīng)對象權(quán)限以及其轉(zhuǎn)授權(quán)的用戶;
(2)如未指定對象的<模式名>,模式為授權(quán)者所在的模式。DIRECTORY
為非模式對象,沒有模式;
(3)如設(shè)定了對象類型,則該類型必須與對象的實(shí)際類型一致,否則會(huì)報(bào)錯(cuò);
(4)帶WITH GRANT OPTION
授予權(quán)限給用戶時(shí),則接受權(quán)限的用戶可轉(zhuǎn)授此權(quán)限;
(5)不帶列清單授權(quán)時(shí),如果對象上存在同類型的列權(quán)限,會(huì)全部自動(dòng)合并;
(6)對于用戶所在的模式的表,用戶具有所有權(quán)限而不需特別指定。 當(dāng)授權(quán)語句中使用了ALL PRIVILEGES
時(shí),會(huì)將指定的數(shù)據(jù)庫對象上所有的對象權(quán)限都授予被授權(quán)者。
GRANT SELECT,UPDATE,INSERT
ON TABLE J
TO R1 ;
第10關(guān) 給予創(chuàng)建的用戶2022100904授予角色R1權(quán)限
任務(wù)描述
給予創(chuàng)建的用戶2022100904授予角色R1權(quán)限。相關(guān)知識(shí)
1、現(xiàn)已創(chuàng)建用戶2022100904
。
2、現(xiàn)已創(chuàng)建角色R1
,角色R1
在mydata
數(shù)據(jù)庫中被授予"J"
表 的SELECT
、UPDATE
、INSERT
權(quán)限。
3、現(xiàn)在mydata
數(shù)據(jù)庫中已構(gòu)建J
表。
4、授予用戶角色權(quán)限語法:
GRANT'角色名' TO '用戶名'@'localhost';
GRANT 'R1' TO '2022100904'@'localhost';
第11關(guān) 給予已授權(quán)限的角色R1在mydata數(shù)據(jù)庫中再次授予"J" 表 的DELETE權(quán)限
任務(wù)描述
給予已授權(quán)限的角色R1
在mydata
數(shù)據(jù)庫中再次授予"J" 表 的DELETE權(quán)限。相關(guān)知識(shí)
1、角色R1
在mydata數(shù)據(jù)庫中被授予"J"
表 的SELECT
、UPDATE
、INSERT
權(quán)限。。
2、現(xiàn)在mydata
數(shù)據(jù)庫中已構(gòu)建J
表。
3、使用GRANT
語句將對象權(quán)限授予用戶和角色。
GRANT DELETE
ON TABLE J
TO R1 ;
第12關(guān) 回收角色R1 對 J 表的 INSERT 權(quán)限
任務(wù)描述
回收角色R1
對J
表的INSERT
權(quán)限。相關(guān)知識(shí)
1、角色R1
在mydata
數(shù)據(jù)庫中被授予"J"
表 的SELECT
、UPDATE
、INSERT
、DELETE
權(quán)限。
2、現(xiàn)在mydata
數(shù)據(jù)庫中已構(gòu)建J
表。
3、使用REVOKE
語句回收已授予的數(shù)據(jù)庫對象的權(quán)限
對象權(quán)限的回收語句語法為:
REVOKE [GRANT OPTION FOR] <特權(quán)> ON [<對象類型>]<對象> FROM <用戶或角色> {,<用戶或角色>} [<回收選項(xiàng)>];
<特權(quán)>::= ALL [PRIVILEGES] | <動(dòng)作> {, <動(dòng)作>}
<動(dòng)作>::= SELECT | INSERT | UPDATE | DELETE | REFERENCES | EXECUTE | READ | WRITE | USAGE
<對象類型>::= TABLE | VIEW | PROCEDURE | PACKAGE | CLASS | TYPE | SEQUENCE | DIRECTORY | DOMAIN
<對象> ::= [<模式名>.]<對象名>
<對象名> ::= <表名> | <視圖名> | <存儲(chǔ)過程/函數(shù)名> |<包名> |<類名> |<類型名> | <序列名> | <目錄名> | <域名>
<用戶或角色>::= <用戶名> | <角色名>
<回收選項(xiàng)> ::= RESTRICT | CASCADE
使用說明:
(1)權(quán)限回收者必須是具有回收相應(yīng)對象權(quán)限以及轉(zhuǎn)授權(quán)的用戶;
(2)回收時(shí)不能帶列清單,若對象上存在同類型的列權(quán)限,則一并被回收;
(3)使用GRANT OPTION FOR
選項(xiàng)的目的是收回用戶或角色權(quán)限轉(zhuǎn)授的權(quán)利,而不回收用戶或角色的權(quán)限;并且GRANT OPTION FOR
選項(xiàng)不能和RESTRICT
一起使用,否則會(huì)報(bào)錯(cuò);
(4)在回收權(quán)限時(shí),設(shè)定不同的回收選項(xiàng),其意義不同。 若不設(shè)定回收選項(xiàng),無法回收授予時(shí)帶WITH GRANT OPTION
的權(quán)限,但也不會(huì)檢查要回收的權(quán)限是否存在限制; 若設(shè)定為RESTRICT
,無法回收授予時(shí)帶WITH GRANT OPTION
的權(quán)限,也無法回收存在限制的權(quán)限,如角色上的某權(quán)限被別的用戶用于創(chuàng)建視圖等; 若設(shè)定為CASCADE
,可回收授予時(shí)帶或不帶WITH GRANT OPTION
的權(quán)限,若帶WITH GRANT OPTION
還會(huì)引起級聯(lián)回收。利用此選項(xiàng)時(shí)也不會(huì)檢查權(quán)限是否存在限制。另外,利用此選項(xiàng)進(jìn)行級聯(lián)回收時(shí),若被回收對象上存在另一條路徑授予同樣權(quán)限給該對象時(shí),則僅需回收當(dāng)前權(quán)限。
用戶A
給用戶B
授權(quán)且允許其轉(zhuǎn)授,用戶B
將權(quán)限轉(zhuǎn)授給用戶C
。當(dāng)用戶A
回收用戶B
的權(quán)限的時(shí)候必須加CASCADE
回收選項(xiàng)。
REVOKE INSERT
ON TABLE J
FROM R1 ;
第13關(guān) 通過角色R1回收用戶2022100904的被授予J表的SELECT 、UPDATE、INSERT權(quán)限
任務(wù)描述
通過角色R1
回收用戶2022100904
的被授予J
表的SELECT
、UPDATE
、INSERT
權(quán)限。相關(guān)知識(shí)
1、現(xiàn)已創(chuàng)建用戶2022100904
。
2、現(xiàn)已創(chuàng)建角色R1
,角色R1
在mydata
數(shù)據(jù)庫中被授予J
表 的SELECT
、UPDATE
、INSERT
權(quán)限。
3、用戶2022100904
已被授予角色R1
權(quán)限。
4、現(xiàn)在mydata
數(shù)據(jù)庫中已構(gòu)建J
表。
5、回收用戶角色權(quán)限語法:
REVOKE '角色名' FROM '用戶名'@'localhost';
REVOKE 'R1' FROM '2022100904'@'localhost';
第14關(guān) 編寫一個(gè)名為INSERT_S的觸發(fā)器,在S表執(zhí)行?INSERT?語句后被激發(fā)
任務(wù)描述
編寫一個(gè)名為INSERT_S
的觸發(fā)器,在S
表執(zhí)行?INSERT
?語句后被激發(fā),此觸發(fā)器將新供應(yīng)商的SNO
、SNAME
、STATUS
、CITY
及執(zhí)行此操作的用戶(USER
)插入N_S
表,N_S
表比S
表增添操作用戶一列。
相關(guān)知識(shí)
1、供應(yīng)商表S
由供應(yīng)商代碼(SNO
)、供應(yīng)商姓名(SNAME
)、供應(yīng)商狀態(tài)(STATUS
)、供應(yīng)商所在城市(CITY
)組成.S
表如下圖:
現(xiàn)已構(gòu)建S
表,結(jié)構(gòu)信息如下:
2、N_S
表由供應(yīng)商的SNO
、SNAME
、STATUS
、CITY
及執(zhí)行此操作的用戶USER
組成,現(xiàn)已構(gòu)建該表,結(jié)構(gòu)信息如下:
3、Mysql
觸發(fā)器語法:
創(chuàng)建觸發(fā)器樣例:刪除tab1
表記錄后自動(dòng)將tab2
表中對應(yīng)的記錄刪去。
注意:
1、獲取用戶名稱的函數(shù)為USER()
;
DELIMITER $$
CREATE TRIGGER INSERT_S
AFTER INSERT ON S
FOR EACH ROW
BEGIN
INSERT INTO N_S (SNO,SNAME,STATUS,CITY,USER)VALUES(NEW.SNO,NEW.SNAME,NEW.STATUS,NEW.CITY,USER());
END $$
DELIMITER ;
第15關(guān) 編寫一個(gè)名為UPDATE_S的觸發(fā)器,檢查S表的STATUS,只允許0-100之間,如果超過100后,改為100。
任務(wù)描述
編寫一個(gè)名為UPDATE_S
的觸發(fā)器,檢查S
表的STATUS
,只允許0-100
之間,超過100
后,改為100
。
DELIMITER $
CREATE TRIGGER UPDATE_S BEFORE
UPDATE ON S
FOR EACH ROW
BEGIN
IF NEW.STATUS>100
THEN SET NEW.STATUS=100;
END IF;
END$
DELIMITER ;
第16關(guān) 編寫一個(gè)名為UPDATE_SPJ的觸發(fā)器,當(dāng)SPJ表中有更新某條記錄時(shí),自動(dòng)更新表SPJ_SUMQTY表
任務(wù)描述
編寫一個(gè)名為UPDATE_SPJ
的觸發(fā)器,當(dāng)SPJ
表中有更新某條記錄時(shí),自動(dòng)更新表SPJ_SUMQTY
表。
相關(guān)知識(shí)
1、供應(yīng)情況表SPJ
由供應(yīng)商代碼(SNO
)、零件代碼(PNO
)、工程項(xiàng)目代碼(JNO
)、供應(yīng)數(shù)量(QTY
)組成,標(biāo)識(shí)某供應(yīng)商 供應(yīng)某種零件 給某工程項(xiàng)目的數(shù)量為QTY
。SPJ
表如下圖:
現(xiàn)已構(gòu)建SPJ表,結(jié)構(gòu)信息如下:
2、SPJ_SUMQTY
表為工程零件數(shù)量統(tǒng)計(jì)表,由工程項(xiàng)目代碼(JNO
)、零件代碼(PNO
)、統(tǒng)計(jì)供應(yīng)數(shù)量SUMQTY
組成,其中SUMQTY
由SPJ
表中的工程項(xiàng)目代碼(JNO
)、零件代碼(PNO
)、供應(yīng)數(shù)量(QTY
),根據(jù)JNO
、PNO
匯總得到。SPJ_SUMQTY
表如下圖:
現(xiàn)已構(gòu)建SPJ_SUMQTY
表,結(jié)構(gòu)信息如下:
DELIMITER $$
CREATE TRIGGER UPDATE_SPJ
AFTER UPDATE ON SPJ
FOR EACH ROW
BEGIN
UPDATE SPJ_SUMQTY SET SUMQTY = SUMQTY + NEW.QTY - OLD.QTY
WHERE PNO = NEW.PNO AND JNO = NEW.JNO;
END $$
DELIMITER;
第17關(guān) 編寫一個(gè)名為DELETE_SPJ的觸發(fā)器,當(dāng)SPJ表中有刪除某條記錄時(shí),自動(dòng)更新表SPJ_SUMQTY表
任務(wù)描述
編寫一個(gè)名為DELETE_SPJ
的觸發(fā)器,當(dāng)SPJ
表中有刪除某條記錄時(shí),自動(dòng)更新表SPJ_SUMQTY
表。文章來源:http://www.zghlxwxcb.cn/news/detail-487843.html
DELIMITER $$
CREATE TRIGGER DELETE_SPJ
AFTER DELETE ON SPJ
FOR EACH ROW
BEGIN
UPDATE SPJ_SUMQTY SET SUMQTY = SUMQTY - OLD.QTY
WHERE SPJ_SUMQTY.PNO = OLD.PNO AND SPJ_SUMQTY.JNO = OLD.JNO;
DELETE FROM SPJ_SUMQTY WHERE SPJ_SUMQTY.SUMQTY <=0;
END $$
DELIMITER ;
第18關(guān) 編寫一個(gè)名為INSERT_SPJ的觸發(fā)器,當(dāng)SPJ表中有插入某條記錄時(shí),自動(dòng)更新表SPJ_SUMQTY表
任務(wù)描述
編寫一個(gè)名為INSERT_SPJ
的觸發(fā)器,當(dāng)SPJ
表中有插入某條記錄時(shí),自動(dòng)更新表SPJ_SUMQTY
表。文章來源地址http://www.zghlxwxcb.cn/news/detail-487843.html
DELIMITER $$
CREATE TRIGGER INSERT_SPJ
AFTER INSERT ON SPJ
FOR EACH ROW
BEGIN
UPDATE SPJ_SUMQTY SET SUMQTY = SUMQTY + NEW.QTY
WHERE SPJ_SUMQTY.PNO = NEW.PNO AND SPJ_SUMQTY.JNO =NEW.JNO;
IF NEW.JNO NOT IN (SELECT JNO FROM SPJ_SUMQTY)
OR NEW.PNO NOT IN (SELECT PNO FROM SPJ_SUMQTY)
THEN INSERT INTO SPJ_SUMQTY VALUES (NEW.JNO,NEW.PNO,NEW.QTY);
END IF;
END $$
DELIMITER ;
到了這里,關(guān)于實(shí)驗(yàn)8 數(shù)據(jù)庫完整性、安全設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!