ant*_*pug 1 sql oracle oracle10g
如果表中还没有数字,如何在表中插入数字?
我正在寻找特定的SQL代码,不知道如何处理这个问题.尝试了几件事,没有任何工作.
编辑
表看起来像这样:
PK ID Value
1 4 500
2 9 3
Run Code Online (Sandbox Code Playgroud)
因此,如果我尝试INSERT (ID, Value) VALUES (4,100)它不应该尝试这样做!
如果ID应该是唯一的,则应该在表上定义唯一约束.如果您尝试插入已存在的值,则会抛出错误
ALTER TABLE table_name
ADD CONSTRAINT uk_id UNIQUE( id );
Run Code Online (Sandbox Code Playgroud)
如果尝试插入重复键,您可以捕获错误并执行任何操作 - 从忽略错误到记录并重新引发异常以引发自定义异常
BEGIN
INSERT INTO table_name( id, value )
VALUES( 4, 100 );
EXCEPTION
WHEN dup_val_on_index
THEN
<<do something>>
END;
Run Code Online (Sandbox Code Playgroud)
您还可以对其进行编码,INSERT以便插入0行(从数据模型的角度来看,您仍然希望存在唯一约束,因为它为优化程序提供了更多信息,并可能使未来的查询更有效)
INSERT INTO table_name( id, value )
SELECT 4, 100
FROM dual
WHERE NOT EXISTS(
SELECT 1
FROM table_name
WHERE id = 4 )
Run Code Online (Sandbox Code Playgroud)
或者您可以编写代码,MERGE以便将VALUE列从500 更新为100而不是插入新行.