如果表格中没有该号码,如何在表格中插入数字?
我正在寻找特定的SQL代码,并不确定如何处理这个问题。尝试了几件事,没有任何工作。
修改
表格如下:
PK ID Value
1 4 500
2 9 3
因此,如果我尝试INSERT (ID, Value) VALUES (4,100)
,我们不应该尝试这样做!
答案 0 :(得分:5)
如果ID
应该是唯一的,那么应该在表上定义一个唯一约束。如果您尝试插入已存在的值
ALTER TABLE table_name
ADD CONSTRAINT uk_id UNIQUE( id );
如果尝试插入重复键,您可以捕获错误并执行任何操作 - 从忽略错误到记录并重新引发异常以引发自定义异常
BEGIN
INSERT INTO table_name( id, value )
VALUES( 4, 100 );
EXCEPTION
WHEN dup_val_on_index
THEN
<<do something>>
END;
您还可以对INSERT
进行编码,以便它插入0行(从数据模型的角度来看,您仍然希望存在唯一约束,因为它为优化程序提供了更多信息,并可能使未来的查询更有效)
INSERT INTO table_name( id, value )
SELECT 4, 100
FROM dual
WHERE NOT EXISTS(
SELECT 1
FROM table_name
WHERE id = 4 )
或者您可以代之以MERGE
代码,以便将VALUE
列从500更新为100而不是插入新行。
答案 1 :(得分:3)
尝试MERGE声明:
MERGE INTO tbl USING
(SELECT 4 id, 100 value FROM dual) data
ON (data.id = tbl.id)
WHEN NOT MATCHED THEN
INSERT (id, value) VALUES (data.id, data.value)
答案 2 :(得分:0)
INSERT INTO YOUR_TABLE (YOUR_FIELD)
SELECT '1' FROM YOUR_TABLE YT WHERE YT.YOUR_FIELD <> '1' LIMIT 1
当然,'1'将是您的号码或变量。 您可以使用INSERT + SELECT来解决此问题。