我有一个包含两列的表:
CREATE TABLE MyTable(
Id int IDENTITY(1,1) NOT NULL,
Name nvarchar(100) NOT NULL);
Run Code Online (Sandbox Code Playgroud)
我想使用 SELECT INSERT 语句复制数据:
INSERT INTO MyTable (Name)
SELECT Name FROM MyTable
Run Code Online (Sandbox Code Playgroud)
这是棘手的部分 - 我想检索原始身份和新身份之间的映射表:
DECLARE @idsMap TABLE (OriginalId int, NewId int)
Run Code Online (Sandbox Code Playgroud)
我知道我应该使用OUTPUT 子句,但由于某种原因它不起作用:
INSERT INTO MyTable (Name)
OUTPUT t.Id, INSERTED.Id INTO @idsMap (OriginalId, NewId)
SELECT Name FROM MyTable t
-- Returns error The multi-part identifier "t.Id" could not be bound.
Run Code Online (Sandbox Code Playgroud)
我将图像 URL 数组编码为 json 字符串并将它们存储在数据库中。(utf8_general_ci)。
当我将数据插入表并检索它时, json_decode() 能够对其进行解码。
但是,当我将数据从一个表复制到另一个表(INSERT INTO ... SELECT 语句)时,从数据库检索后的数据无法再解码。
相反,我得到损坏的 json ENCoded 字符串。即使空数组也[]
无法正确解码。
它从http://pl.tinypic.com/r/fwoiol/8转换 为http://pl.tinypic.com/r/bgea05/8
(必须制作图像,因为这些方块无法复制为文本)。
编辑,经过更多检查后,我尝试从数据库中 bin2hex() 两个字符串。
两者似乎完全一样。
然而,一种可以解码,另一种则不能。这
5b22687474703a5c2f5c2f7777772e
changes into
0022687474703a5c2f5c2f7777772e
Run Code Online (Sandbox Code Playgroud)
因此,json_decode仅将字符串中的5b更改为00。
就像它在某处丢失编码一样?
编辑2
static public function jsonDecodeFieldsArray($entries, $fields = array('features','images')){
foreach($entries as $key => $entry){
$entries[$key] = self::jsonDecodeFields($entry, $fields);
}
return $entries;
}
static public function jsonDecodeFields($entry, $fields = array('features','images')){
foreach($fields as $field){
if(isset($entry[$field])){
$entry[$field] = json_decode((string) $entry[$field], true);
}
}
return $entry;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用上面的代码来解码 $fields 指定的数组的键。然而,它不仅解码错误。但也会影响 …
我有以下代码:
rating = user.recipe_ratings.where(:recipe_id => recipe.id).where(:delivery_id => delivery.id).first_or_create
Run Code Online (Sandbox Code Playgroud)
然而不知何故,我们偶尔会遇到PG::Error: ERROR: duplicate key value violates unique constraint
错误。我想不出任何应该发生的原因,因为重点first_or_create
是防止这些情况发生。
这只是一个疯狂的竞争条件吗?我怎样才能在没有一系列令人发狂的begin...rescue
块的情况下解决这个问题?
postgresql activerecord race-condition select-insert ruby-on-rails-3