标签: sql-insert

同一INSERT期间另一列中串行列的引用值

我有一个带有SERIAL主键的表,还有一个ltree列,其值我想成为这些主键的串联.例如

id | path
----------
1    1
2    1.2
3    1.2.3
4    1.4
5    1.5
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有办法在一个查询中进行这样的插入,例如

INSERT INTO foo (id, ltree) VALUES (DEFAULT, THIS.id::text)
Run Code Online (Sandbox Code Playgroud)

我可能在这里过度使用并试图在一个查询中做我应该做的两件事(在一个事务中分组).

sql postgresql auto-increment sql-insert

11
推荐指数
1
解决办法
2246
查看次数

如果存在行则返回id,否则返回INSERT

我正在node.js中编写一个函数来查询PostgreSQL表.
如果该行存在,我想从该行返回id列.
如果它不存在,我想插入它并返回id(insert into ... returning id).

我一直在尝试变体caseif else语句,似乎无法让它发挥作用.

sql postgresql node.js sql-insert

10
推荐指数
2
解决办法
7283
查看次数

使用PostgreSQL 9.3在CTE UPSERT中生成DEFAULT值

我发现使用可写CTE模拟PostgreSQL中的upsert是一个非常优雅的解决方案,直到我们在Postgres中获得实际的upsert/merge.(见:https://stackoverflow.com/a/8702291/558819)

但是,有一个问题:如何插入默认值?NULL当然,使用将无助于NULL显式插入NULL,与MySQL不同.一个例子:

WITH new_values (id, playlist, item, group_name, duration, sort, legacy) AS (
    VALUES (651, 21, 30012, 'a', 30, 1, FALSE)
    ,      (NULL::int, 21, 1, 'b', 34, 2, NULL::boolean)
    ,      (668, 21, 30012, 'c', 30, 3, FALSE)
    ,      (7428, 21, 23068, 'd', 0, 4, FALSE)
), upsert AS (
    UPDATE playlist_items m
    SET    (playlist, item, group_name, duration, sort, legacy)
       = (nv.playlist, nv.item, nv.group_name, nv.duration, nv.sort, nv.legacy)
    FROM   new_values nv
    WHERE …
Run Code Online (Sandbox Code Playgroud)

sql postgresql merge upsert sql-insert

10
推荐指数
1
解决办法
1787
查看次数

在PHP PDO MYSQL中插入多行的最佳方法是什么?

比如,我们在表中插入了多行:

$rows = [(1,2,3), (4,5,6), (7,8,9) ... ] //[ array of values ];
Run Code Online (Sandbox Code Playgroud)

使用PDO:

$sql = "insert into `table_name` (col1, col2, col3) values (?, ?, ?)" ;
Run Code Online (Sandbox Code Playgroud)

现在,您应该如何继续插入行?像这样?

$stmt = $db->prepare($sql);

foreach($rows as $row){
  $stmt->execute($row);
}
Run Code Online (Sandbox Code Playgroud)

或者,像这样?

$sql = "insert into `table_name` (col1, col2, col3) values ";
$sql .= //not sure the best way to concatenate all the values, use implode?
$db->prepare($sql)->execute();
Run Code Online (Sandbox Code Playgroud)

哪种方式更快更安全?插入多行的最佳方法是什么?

php mysql pdo sql-insert

10
推荐指数
2
解决办法
7747
查看次数

Android - SQLite ContentResolver在UI线程上插入/删除/更新?

我已经浏览了许多在Android中使用SQLite的示例/教程.比方说,你有使用SQLite,一个应用程序ContentProvider,CursorLoader一个自定义CursorAdapter.现在我发现的所有主要示例都依赖于a CursorLoader来获取数据CursorAdapter,这本质上CursorLoader是以Async-UI线程安全的方式发生的.然而,这些相同的例子都使插入/删除/更新通过调用ContentResolver在主线程(例如,从onClick,onResume,onPause).(示例)它们不会将这些调用包装在一个AsyncTask或启动一个单独的线程中或使用AsyncQueryHandler.为什么这样,如此多的写得好的博客/例子怎么会犯这么明显的错误呢?或者是简单的单行插入/删除/更新调用如此之快,以至于它们足以安全地从Main/UI线程启动?这些快速通话的正确方法是什么?

sqlite android ui-thread android-contentresolver sql-insert

10
推荐指数
1
解决办法
1990
查看次数

复制父,子和孙记录

我有一个父表,表示一个文件,表中的每个记录在子表中有n个子记录.每个子记录可以有n个孙子记录.这些记录处于已发布状态.当用户想要修改已发布的文档时,我们需要克隆父项及其所有子项和孙项.

表结构如下所示:

CREATE TABLE [ql].[Quantlist] (
    [QuantlistId]   INT           IDENTITY (1, 1) NOT NULL,
    [StateId]       INT           NOT NULL,
    [Title]         VARCHAR (500) NOT NULL,
    CONSTRAINT [PK_Quantlist] PRIMARY KEY CLUSTERED ([QuantlistId] ASC),
    CONSTRAINT [FK_Quantlist_State] FOREIGN KEY ([StateId]) REFERENCES [ql].[State] ([StateId])
);
Run Code Online (Sandbox Code Playgroud)

儿童

CREATE TABLE [ql].[QuantlistAttribute]
(
    [QuantlistAttributeId] INT IDENTITY (1, 1),
    [QuantlistId] INT NOT NULL,
    [Narrative] VARCHAR (500) NOT NULL,
    CONSTRAINT [PK_QuantlistAttribute] PRIMARY KEY ([QuantlistAttributeId]), 
    CONSTRAINT [FK_QuantlistAttribute_QuantlistId] FOREIGN KEY ([QuantlistId]) REFERENCES [ql].[Quantlist]([QuantlistId]),
)
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-insert sql-server-2012

10
推荐指数
1
解决办法
941
查看次数

INSERT INTO ... FROM SELECT ... RETURNING id mappings

我正在使用PostgreSQL 9.3.

我想复制一些db记录.由于我正在为表使用自动增量pk id,因此我想从生成的重复记录ID返回到原始ID的id映射.例如,假设我有一个posts包含2条记录的表:

 [{'id': 1, 'title': 'first'}
, {'id': 2. 'title': 'second'}]
Run Code Online (Sandbox Code Playgroud)

使用SQL:

INSERT INTO posts (title) SELECT title FROM posts RETURNING id, ??
Run Code Online (Sandbox Code Playgroud)

我希望看到像这样的映射:

 [{'id': 3, 'from_id': 1}
, {'id': 4, 'from_id': 2}]
Run Code Online (Sandbox Code Playgroud)

有关如何填写上述问号以使其有效的任何想法?非常感谢!

sql postgresql sql-insert sql-returning

9
推荐指数
2
解决办法
4206
查看次数

错误:关系列不存在PostgreSQL,无法运行插入查询

嗨我试图插入表tester3它使用语法失败

insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');
Run Code Online (Sandbox Code Playgroud)

insert into tester3 values ( 1, 'jishnu1');
Run Code Online (Sandbox Code Playgroud)

工作正常.

mydb=# CREATE TABLE tester3
mydb-#    (
mydb(#     "UN0" integer,
mydb(#     "UN1" VARCHAR(40)
mydb(#    );
CREATE TABLE
mydb=# insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');
ERROR:  column "un0" of relation "tester3" does not exist
mydb=# \d tester3
           Table "public.tester3"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 UN0    | integer               |
 UN1    | character varying(40) |
Run Code Online (Sandbox Code Playgroud)

我想我错过了一些非常微不足道的东西,我尝试了其他一些列名称,其中一些工作正常,一些不起作用.我很迷惑.PostgreSQL对列名的限制是否适用于插入查询的第一种语法?


编辑: 正如Gordon Linoff 所建议的 …

sql postgresql quoted-identifier sql-insert

9
推荐指数
2
解决办法
3万
查看次数

是否有Z.EntityFramework.Extensions的非商业替代品?

实体框架在批量插入/更新/删除操作上可能非常慢.即使是经常建议的关闭AutoDetectChanges和/或ValidateOnSaveEnabled的调整也并不总是有帮助.

我在NuGet上遇到过Z.EntityFramework.Extensions,但它似乎是一个商业产品,只能运行一段时间.

https://www.nuget.org/packages/Z.EntityFramework.Extensions/

到目前为止,我真的只需要BulkInsert(),BulkUpdate()和BulkDelete().

我的问题是:

有没有可靠的非商业库,它与Z.EntityFramework.Extensions几乎相同?

谢谢你的任何提示!

c# sql-update sql-insert entity-framework-6 sql-delete

9
推荐指数
1
解决办法
6603
查看次数

如何将json数据插入postgres数据库表

我是初学者,尝试使用教程将 JSON 值插入数据库

我使用以下命令创建了该表

CREATE TABLE table_name( id character varying(50),
                         data json NOT NULL,
                         active boolean NOT NULL,
                         created_at timestamp with time zone NOT NULL,
                         updated_at timestamp with time zone NOT NULL,
                         CONSTRAINT table_name_pkey PRIMARY KEY (id)
                       );
Run Code Online (Sandbox Code Playgroud)

该表是使用 table_name 创建的。

现在我尝试将值插入数据库:

INSERT INTO table_name
SELECT id,data,active,created_at,updated_at
FROM json_populate_record (NULL::table_name,
     '{
        "id": "1",
        "data":{
                "key":"value"
                },
         "active":true,
         "created_at": SELECT NOW(),
         "updated_at": SELECT NOW()
       }'
  );
Run Code Online (Sandbox Code Playgroud)

它抛出以下错误

错误:类型 JSON '{ 的输入语法无效

任何人都可以帮助我解析 JSON 值并将其插入数据库吗?

postgresql json sql-insert

9
推荐指数
1
解决办法
5万
查看次数