使用来自会话状态的值和另一个 table 插入一个新的 table
Insert into a new table with values from session state and another table
我想从一个程序插入到一个新的 table 中,如下所示
unit_id 来自一个叫做 lms_units 的 table 并且它有一个 FK 到 lms_qualifications 叫做 qualification_id
table 将拥有 1 名具有 1 项资格的培训师以及所有与之相关的单位
insert into LMS_TRAINER_QUALI_UNITS
(
lms_trainer_quali_units_id,
Trainer_id,
Qualification_id,
unit_id
)
Values
(
lms_trainer_quali_units_id_seq.nextval,
:P2_Trainer_id,
:P6_qualification_id,
Unit_id --- this will have many values
)
Oracle 设置:
CREATE TABLE lms_qualifications (
Qualification_id, Title, Code
) AS
SELECT 33450, 'Lifter', 123 FROM DUAL;
CREATE TABLE LMS_UNITS (
Unit_id, Qualification_id, description
) AS
SELECT 69052, 33450, 'Elective' FROM DUAL UNION ALL
SELECT 69053, 33450, 'core' FROM DUAL UNION ALL
SELECT 69054, 33450, 'core' FROM DUAL UNION ALL
SELECT 69055, 33450, 'Elective' FROM DUAL UNION ALL
SELECT 69056, 33450, 'Elective' FROM DUAL;
预计 LMS_TRAINER_QUALI_UNITS
+----------------------------+------------+------------------+---------+
| lms_trainer_quali_units_id | Trainer_id | Qualification_id | unit_id |
+----------------------------+------------+------------------+---------+
| 50001 | 4500 | 33450 | 69052 |
| 50002 | 4500 | 33450 | 69053 |
| 50003 | 4500 | 33450 | 69054 |
| 50004 | 4500 | 33450 | 69055 |
| 50005 | 4500 | 33450 | 69056 |
+----------------------------+------------+------------------+---------+
您可以使用 INSERT INTO ... SELECT
将值从一个 table 复制到另一个:
insert into LMS_TRAINER_QUALI_UNITS (
lms_trainer_quali_units_id,
Trainer_id,
Qualification_id,
unit_id
)
SELECT lms_trainer_quali_units_id_seq.nextval,
:P2_Trainer_id,
Qualification_id,
Unit_id
FROM LMS_UNITS
WHERE Qualification_id = :P6_qualification_id
我想从一个程序插入到一个新的 table 中,如下所示 unit_id 来自一个叫做 lms_units 的 table 并且它有一个 FK 到 lms_qualifications 叫做 qualification_id table 将拥有 1 名具有 1 项资格的培训师以及所有与之相关的单位
insert into LMS_TRAINER_QUALI_UNITS
(
lms_trainer_quali_units_id,
Trainer_id,
Qualification_id,
unit_id
)
Values
(
lms_trainer_quali_units_id_seq.nextval,
:P2_Trainer_id,
:P6_qualification_id,
Unit_id --- this will have many values
)
Oracle 设置:
CREATE TABLE lms_qualifications (
Qualification_id, Title, Code
) AS
SELECT 33450, 'Lifter', 123 FROM DUAL;
CREATE TABLE LMS_UNITS (
Unit_id, Qualification_id, description
) AS
SELECT 69052, 33450, 'Elective' FROM DUAL UNION ALL
SELECT 69053, 33450, 'core' FROM DUAL UNION ALL
SELECT 69054, 33450, 'core' FROM DUAL UNION ALL
SELECT 69055, 33450, 'Elective' FROM DUAL UNION ALL
SELECT 69056, 33450, 'Elective' FROM DUAL;
预计 LMS_TRAINER_QUALI_UNITS
+----------------------------+------------+------------------+---------+
| lms_trainer_quali_units_id | Trainer_id | Qualification_id | unit_id |
+----------------------------+------------+------------------+---------+
| 50001 | 4500 | 33450 | 69052 |
| 50002 | 4500 | 33450 | 69053 |
| 50003 | 4500 | 33450 | 69054 |
| 50004 | 4500 | 33450 | 69055 |
| 50005 | 4500 | 33450 | 69056 |
+----------------------------+------------+------------------+---------+
您可以使用 INSERT INTO ... SELECT
将值从一个 table 复制到另一个:
insert into LMS_TRAINER_QUALI_UNITS (
lms_trainer_quali_units_id,
Trainer_id,
Qualification_id,
unit_id
)
SELECT lms_trainer_quali_units_id_seq.nextval,
:P2_Trainer_id,
Qualification_id,
Unit_id
FROM LMS_UNITS
WHERE Qualification_id = :P6_qualification_id