相关疑难解决方法(0)

MySQL:如果表中不存在则插入记录

我正在尝试执行以下查询:

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'字段已存在于另一条记录中 - 如何检查新名称是否唯一?

mysql

356
推荐指数
11
解决办法
64万
查看次数

2 HTTP请求同时检查记录是否存在,如果不存在则创建它=重复记录

我有这个应用程序,在第一次启动时,在我的服务器后端调用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)

ruby mysql ruby-on-rails

3
推荐指数
1
解决办法
160
查看次数

标签 统计

mysql ×2

ruby ×1

ruby-on-rails ×1