Sql 为什么此insert语句引发表达式丢失错误?
我正在使用Oracle SQL。为什么此insert语句引发表达式丢失错误Sql 为什么此insert语句引发表达式丢失错误?,sql,oracle,sql-insert,Sql,Oracle,Sql Insert,我正在使用Oracle SQL。为什么此insert语句引发表达式丢失错误 INSERT INTO T_DATA(id, object_type, object_id, measurement_id, derived_ind, no_hist_ind, display_order, stored_precision, display_precision,
INSERT INTO T_DATA(id, object_type, object_id,
measurement_id, derived_ind, no_hist_ind,
display_order, stored_precision, display_precision,
required_ind, mod_user, mod_dtime)
VALUES(SELECT MAX(id) + 1 FROM t_data_point, 'Object', 'ObjectName',
'ID', 3, 0, 1, 2, 2, 0, 'TEST', SYSDATE);
您的用法可以是插入。。进入选择..
INSERT INTO T_DATA(id, object_type, object_id,
measurement_id, derived_ind, no_hist_ind,
display_order, stored_precision, display_precision,
required_ind, mod_user, mod_dtime)
(SELECT MAX(id) + 1, 'Object', 'ObjectName',
'ID', 3, 0, 1, 2, 2, 0, 'TEST', SYSDATE
FROM t_data_point);
要使用,请在值中选择。。。将它们嵌入括号中
VALUES(
(SELECT MAX(id) + 1 FROM t_data_point),
...
)
编辑:
确保INSERT
列中的表达式与值匹配。您的用法可以是INSERT。。进入选择..
INSERT INTO T_DATA(id, object_type, object_id,
measurement_id, derived_ind, no_hist_ind,
display_order, stored_precision, display_precision,
required_ind, mod_user, mod_dtime)
(SELECT MAX(id) + 1, 'Object', 'ObjectName',
'ID', 3, 0, 1, 2, 2, 0, 'TEST', SYSDATE
FROM t_data_point);
要使用,请在值中选择。。。将它们嵌入括号中
VALUES(
(SELECT MAX(id) + 1 FROM t_data_point),
...
)
编辑:
确保INSERT
列中的表达式与VALUES
匹配。您提供的数据似乎少于插入所需的数据量
在t_数据(12个表达式)中插入值(11个表达式)您提供的数据似乎少于插入所需的数据量
在t_数据(12个表达式)中插入值(11个表达式)作为Maheswaran答案的替代方法。您仍然可以在使用值的同时实现查询。您只需要将SELECT语句包装在括号中
INSERT INTO T_DATA (Id,
object_type,
object_id,
measurement_id,
derived_ind,
no_hist_ind,
display_order,
stored_precision,
display_precision,
required_ind,
mod_user,
mod_dtime)
VALUES (
(
SELECT
MAX(Id) + 1
FROM t_data_point
)
,
'Object',
'ObjectName',
'ID',
3,
0,
1,
2,
2,
0,
'TEST',
SYSDATE);
然而,我仍然会使用第一个答案。作为马赫斯瓦兰答案的替代。您仍然可以在使用值的同时实现查询。您只需要将SELECT语句包装在括号中
INSERT INTO T_DATA (Id,
object_type,
object_id,
measurement_id,
derived_ind,
no_hist_ind,
display_order,
stored_precision,
display_precision,
required_ind,
mod_user,
mod_dtime)
VALUES (
(
SELECT
MAX(Id) + 1
FROM t_data_point
)
,
'Object',
'ObjectName',
'ID',
3,
0,
1,
2,
2,
0,
'TEST',
SYSDATE);
但是,我仍然会使用第一个答案。值的部分select
没有被视为相应的数据类型。我猜,不要使用select MAX(id)+1 FROM
生成唯一的id。使用一个序列,其他一切都将中断-而不是更早。值的部分select
未被视为相应的数据类型我猜不要使用select MAX(id)+1 FROM
生成唯一的id。使用一个序列,其他的一切都将中断-而不是更早。