创建触发器时出错
我创建了以下表:
CREATE TABLE PILOTO_COPILOTO (
nip number,
anos_experienciencia float)
TABLESPACE TSPROYECTOABD;
并
CREATE TABLE TRIPULACION (
nip number,
nombre varchar(20),
apellido varchar(20),
fecha_nac date,
fecha_contratacion date,
sexo char,
idiomas varchar(50),
nacionalidad varchar(20))
TABLESPACE TSPROYECTOABD;
创建了以下触发器以将一行插入到与 PILOTO_COPILOTO 中的新行相对应的 TRIPULACION 中。
create or replace
TRIGGER anadir_tripulacion
AFTER INSERT OR UPDATE ON PILOTO_COPILOTO
REFERENCING NEW AS newRow
FOR EACH ROW
BEGIN
INSERT INTO TRIPULACION VALUES(:newRow.NIP);
END anadir_tripulacion;
我在尝试使用 PILOTO_COPILOTO 的 nip 字段更新 TRIPULACION 表时遇到以下错误。
Error(7,9): PL/SQL: SQL Statement ignored
Error(7,21): PL/SQL: ORA-00947: not enough values
为什么?
I created the following tables:
CREATE TABLE PILOTO_COPILOTO (
nip number,
anos_experienciencia float)
TABLESPACE TSPROYECTOABD;
and
CREATE TABLE TRIPULACION (
nip number,
nombre varchar(20),
apellido varchar(20),
fecha_nac date,
fecha_contratacion date,
sexo char,
idiomas varchar(50),
nacionalidad varchar(20))
TABLESPACE TSPROYECTOABD;
And created the following trigger to insert a row into TRIPULACION corresponding to the new row in PILOTO_COPILOTO.
create or replace
TRIGGER anadir_tripulacion
AFTER INSERT OR UPDATE ON PILOTO_COPILOTO
REFERENCING NEW AS newRow
FOR EACH ROW
BEGIN
INSERT INTO TRIPULACION VALUES(:newRow.NIP);
END anadir_tripulacion;
I got the following errors trying to update the TRIPULACION table with the nip field of PILOTO_COPILOTO.
Error(7,9): PL/SQL: SQL Statement ignored
Error(7,21): PL/SQL: ORA-00947: not enough values
Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果直接使用
INSERT INTO VALUES(...)
,则必须指定表的所有列。您可以像这样精确地在其中插入数据的列。
If you use directly
INSERT INTO VALUES(...)
, you must specify all the columns of the table.You can precise the column in which you want insert data like this.
这是因为当您省略列列表时,这意味着您正在插入完整的列列表,因此您所写的实际上是
所以很明显您有 8 列要插入,但提供了 1 个值。
This is because when you omit the column list, it implies that you are inserting the complete column list, so what you are writing is really
So it is clear you have 8 columns to insert to but 1 value provided.