我正在尝试执行以下查询:
INSERT INTO table_listnames (name, address, tele)
VALUES ('Rupert', 'Somewhere', '022')
WHERE NOT EXISTS (
SELECT name FROM table_listnames WHERE name='value'
);
Run Code Online (Sandbox Code Playgroud)
但这会返回错误.基本上我不想插入记录,如果记录的'name'字段已存在于另一条记录中 - 如何检查新名称是否唯一?
我有这个应用程序,在第一次启动时,在我的服务器后端调用2个不同的API端点(两者的用途非常不同).但是,这两种方法都before_filter使用HTTP_AUTH标头中传递的信息(设备标识符+ api密钥)来验证呼叫.
如果它无法使用提供的标识符从我的设备表中找到一行,它会自动创建一个带有该标识符的新行.我的问题是,似乎有时2个调用是如此同步,以至于两个请求都找不到任何记录,因此它们都创建了一个新的设备行(结果是具有相同设备标识符的重复行).
我的auth方法如下所示:
def current_user
authenticate_with_http_basic do |udid, secret|
if secret == APP_SECRET
@device = Device.find_by_udid(udid)
if !@device
@device = Device.new
@device.udid = udid
@device.created_on = DateTime.now.utc
end
// set a bunch of properties on @device
@device.connected_at = DateTime.now.utc
@device.save
end
end
end
Run Code Online (Sandbox Code Playgroud)