創建一個觸發器,當用戶往表格插入一行資料時,將該行資料的部門編號在原來的基礎上加1
uj5u.com熱心網友回復:
用PL/sql陳述句代碼怎么撰寫uj5u.com熱心網友回復:
SQL>
SQL> col dept_id format a10;
SQL> col num format a10;
SQL> create table dept(dept_id int, dept_name varchar(10), num int );
Table created
SQL> create table emp(emp_id int, dept_id int, emp_name varchar(10));
Table created
SQL> create trigger tri_emp_ins
2 before insert on emp
3 for each row
4 begin
5 update dept set num = num + 1 where dept_id = :new.dept_id;
6 end;
7 /
Trigger created
SQL> insert into dept values(100, 'Dev',0);
1 row inserted
SQL> select * from dept;
DEPT_ID DEPT_NAME NUM
---------- ---------- ----------
100 Dev 0
SQL> insert into emp values(1, 100, 'zhangsan');
1 row inserted
SQL> select * from dept;
DEPT_ID DEPT_NAME NUM
---------- ---------- ----------
100 Dev 1
SQL> drop table dept purge;
Table dropped
SQL> drop table emp purge;
Table dropped
SQL>
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
大神理解錯我的意思了哈,我不是更新部門人數,而是 當用戶往表格插入一行資料時 ,部門編號在原來的基礎上加1。(如:本表中有兩個部門,編號為1和2,則下次插入資料之前,將新資料的部門編號設定為3)uj5u.com熱心網友回復:
大神理解錯我的意思了哈,我不是更新部門人數,而是 當用戶往表格插入一行資料時 ,部門編號在原來的基礎上加1。(如:本表中有兩個部門,編號為1和2,則下次插入資料之前,將新資料的部門編號設定為3)
uj5u.com熱心網友回復:
舉個例子吧;uj5u.com熱心網友回復:
部門編號 部門名稱 產品型號 通過檢驗 總數1 生產1部 XT-03 650 730
2 生產2部 XT-03 680 780
創建一個觸發器,當用戶往表格插入一行資料時,將該行資料的部門編號在原來的基礎上加1。
(如:本表中有兩個部門,編號為1和2,則下次插入資料之前,將新資料的部門編號設定為3)
uj5u.com熱心網友回復:
還是沒看明白,你說一下,在插入用戶之前,部門表長什么樣,插入資料后,部門表又表什么樣,用excel 畫一下
uj5u.com熱心網友回復:
哥,你想太復雜了,只是一道考試題目,就一個表,表結構為:
部門編號 部門名稱 產品型號 通過檢驗 總數
1 生產1部 XT-03 650 730
2 生產2部 XT-03 680 780
現在我要創建一個觸發器,當我往上面這個表中插入一行資料時,將該行資料的部門編號在原來的基礎上加1。
(如:我這個表中有兩個部門,部門編號為1和2,則下次插入資料之前,將新資料的部門編號設定為3)
這樣實作嗎
uj5u.com熱心網友回復:
-- 是這個意思嗎?
SQL>
SQL> col deptid format a10;
SQL> col empid format a10;
SQL> create sequence seq_test;
Sequence created
SQL> create table test(deptid int, empid int, empname varchar(10));
Table created
SQL> create trigger tri_test_ins
2 before insert on test
3 for each row
4 begin
5 :new.deptid := seq_test.nextval;
6 end;
7 /
Trigger created
SQL> insert into test(empid, empname) values(101,'zhang');
1 row inserted
SQL> insert into test(empid, empname) values(102,'li');
1 row inserted
SQL> insert into test(empid, empname) values(105,'wang');
1 row inserted
SQL> select * from test;
DEPTID EMPID EMPNAME
---------- ---------- ----------
1 101 zhang
2 102 li
3 105 wang
SQL> drop sequence seq_test;
Sequence dropped
SQL> drop table test purge;
Table dropped
SQL>
uj5u.com熱心網友回復:
-- 是這個意思嗎?
SQL>
SQL> col deptid format a10;
SQL> col empid format a10;
SQL> create sequence seq_test;
Sequence created
SQL> create table test(deptid int, empid int, empname varchar(10));
Table created
SQL> create trigger tri_test_ins
2 before insert on test
3 for each row
4 begin
5 :new.deptid := seq_test.nextval;
6 end;
7 /
Trigger created
SQL> insert into test(empid, empname) values(101,'zhang');
1 row inserted
SQL> insert into test(empid, empname) values(102,'li');
1 row inserted
SQL> insert into test(empid, empname) values(105,'wang');
1 row inserted
SQL> select * from test;
DEPTID EMPID EMPNAME
---------- ---------- ----------
1 101 zhang
2 102 li
3 105 wang
SQL> drop sequence seq_test;
Sequence dropped
SQL> drop table test purge;
Table dropped
SQL>
嗯 知道了 謝謝大神
uj5u.com熱心網友回復:
創建自增序列 每次增加1, 11L可以借鑒,建立序列后直接將資料插入到 insert into emp(序列.nextval,101,‘張三’);這樣就可以了。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/107655.html
標籤:開發
