标签: insert

根据值将 MySQL 上的数据插入到特定位置(类似于 ORDER BY)

为简单起见,我有一个包含 3 列的 MySQL 表:

Datename     |Date    |Name
-------------+--------+-----
30/06/15test |30/06/15|test
30/06/15other|30/06/15|other
Run Code Online (Sandbox Code Playgroud)

注意:Datename是唯一的

我希望所有新数据都根据其值插入到表中。

例子:

  • 如果Date29/06/15,它将被插入到表格的底部。
  • 如果Date01/07/15,它将被插入到表格的顶部

或者最好按Datename列排序,以便按日期和名称排序。

这是容易实现的,还是我只是需要创建一个网页,SELECTORDER BY

mysql insert

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

如何将 varchar 值列表插入到单列表中?

在 SQL Server 2005 中:

CREATE TABLE __RADHE
(
    itemNo varchar(10) not null primary key clustered
);
GO

INSERT INTO __RADHE ???

'34926840', '34927020', '34927202', '34927384', '34927566',
'34927830', '34927889', '34930743', '34930750', '34927897',
'34927848', '34927574', '34927392', '34927210', '34927038',
'34926857', '34917120', '34917286', '34917443', '34926865',
'34927046', '34927228', '34927400', '34927582', '34927855',
'34927905', '34930768', '34930776', '34927913', '34927863',
'34927590', '34927418', '34927236', '34927053', '34926873',
'34917450', '34917294', '34917138', '34917146', '34917302',
'34917468', '34926881', '34927061', '34927244', '34927426',
'34927608', '34927871', '34927921', '34930784', '34927616',
'34927434', '34927251', '34927079', '34926899', '34917476',
'34917310', '34917153', '34917161', …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server insert

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

使用另一个 INSERT 的返回值 INSERT INTO

我想做这样的事情:

INSERT INTO table2(name)
  INSERT INTO table1(name, address) VALUES ('me', 'home')
  RETURNING name;
Run Code Online (Sandbox Code Playgroud)

然后我希望在 table2 中有一个新记录'me'in name。这在SELECT返回值时可以正常工作,但我在嵌套插入时遇到了问题。

postgresql insert

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

Postgres - 使用外键约束导入多行

我似乎无法为我的问题找到答案,也许我没有问正确的问题,但它是这样的:

我在 pgAdmin 中基本上有两个表,比如说studentand grades,最终有一个外键约束(student_id 引用 student(id)

CREATE TABLE student (
    id CHAR(2),
    name CHAR(4),
PRIMARY KEY (id));

CREATE TABLE grade (
    student_id CHAR(2),
    grade INT,
FOREIGN KEY (student_id) REFERENCES student(id));
Run Code Online (Sandbox Code Playgroud)

我想做的是将两个文件复制/导入到数据库中。一切对学生都有好处,但我的grade.csv文件将包含不存在的学生 ID,我希望导入忽略而不是插入它们。取而代之的是,命令失败,没有导入任何内容。

什么是正确有效的方法来做到这一点?

postgresql foreign-key insert pgadmin

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

SQL 使用 UNIQUE 约束插入多个值

我有一个 MS SQL Server 2012 和下表:

CREATE TABLE dzp.contractid (
id bigint PRIMARY KEY IDENTITY(1,1),
VNR char(18) NOT NULL,
CONSTRAINT UC_VNR UNIQUE (VNR))
Run Code Online (Sandbox Code Playgroud)

对于上下文,VNR 表示字符串形式的唯一合同编号。

我想导入一个包含合同信息的 csv 文件,每个合同可能有多行。为了避免查询 char(18),我尝试在加载时使用临时表的 INSERT-Trigger 规范化数据。

流程是:

csv-file --> staging table --> insert trigger --> normalized tables
Run Code Online (Sandbox Code Playgroud)

在我的触发器中,我正在尝试以下操作:

BEGIN TRY
    INSERT INTO dzp.contractid(VNR)
    SELECT VNR
    FROM dzp.accounts_stage
END TRY

BEGIN CATCH
-- ignore unique constraint violation error, raise otherwise
IF ERROR_NUMBER() <> 2627
    RAISERROR ('blah', 16, 1)
END CATCH
Run Code Online (Sandbox Code Playgroud)

所以我希望实现的基本上是:

  1. 从临时表中获取所有合同号
  2. 将所有这些数字添加到规范化表中
  3. 忽略违反唯一约束时抛出的错误
  4. 正常工作时,我现在有一张包含所有唯一 VNR …

sql-server constraint insert sql-server-2012 unique-constraint

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

SQL Server 并发删除/插入应用程序

我们如何在并行的多线程环境中删除然后插入行,同时避免死锁?应用UPDLOCK和后,我仍然收到僵局SERIALIZABLE。请参阅下面的死锁错误。

资源:

我有一个 C#/ASP 应用程序在并发环境中运行两个不同的连接,尝试删除并稍后为一个人插入数据。我听说应用程序的行为有所不同。

我试过这个:

connection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted))
Run Code Online (Sandbox Code Playgroud)

connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
Run Code Online (Sandbox Code Playgroud)

上存在非聚集索引HeaderId,相同的索引Headerid可以在表中出现多次。

<event name="xml_deadlock_report" package="sqlserver" timestamp="2017-10-10T07:10:41.524Z">
  <data name="xml_report">
    <value>
      <deadlock>
        <victim-list>
          <victimProcess id="process3e7eb2188" />
        </victim-list>
        <process-list>
          <process id="process3e7eb2188" taskpriority="0" logused="26140" waitresource="KEY: 11:72057594039304192 (32fb2d1e9782)" waittime="3176" ownerId="2548574" transactionname="user_transaction" lasttranstarted="2017-10-10T00:10:38.313" XDES="0x3e7f223a8" lockMode="RangeS-U" schedulerid="8" kpid="18256" status="suspended" spid="58" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2017-10-10T00:10:38.323" lastbatchcompleted="2017-10-10T00:10:38.320" lastattention="1900-01-01T00:00:00.320" clientapp=".Net SqlClient Data Provider" hostname="JOHN-SMITH" hostpid="12976" loginname="johnsmith" isolationlevel="serializable (4)" xactid="2548574" currentdb="11" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
            <executionStack>
              <frame …
Run Code Online (Sandbox Code Playgroud)

sql-server delete insert concurrency

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

k=v 在 INSERT INTO tbl VALUES (expr) 的上下文中做什么

离开这个答案,我想知道为什么词法分析器允许它在这个语句中一直深入到几何语法INSERT

CREATE TABLE foo ( x varchar(255) );
> INSERT INTO foo VALUES ( x='foo' );
Query OK, 1 row affected (0.01 sec)
Run Code Online (Sandbox Code Playgroud)

我知道这是不对的,正如上面的答案表明应该是这样INSERT INTO tbl SET,但是发生了什么?MySQL 是如何解释的?在 PostgreSQL 中,这种语法被拒绝。

test=# CREATE TABLE foo ( x varchar(255) );
INSERT INTO foo VALUES ( x='foo' );
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 将其解释为列引用并出错,进一步提供提示

ERROR:  column "x" does not exist
LINE 1: INSERT INTO foo VALUES ( x='foo' );
HINT:  There is a column named "x" in table …
Run Code Online (Sandbox Code Playgroud)

mysql insert

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

Postgres,如何将“0”值插入串行?

serial我的应用程序表中有一个ID。但是,我想插入一个0id 记录来表示全局。

有没有一种方法可以将它插入我的桌子而不影响计数器?

postgresql insert sequence

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

在表格中插入特殊字符

我有几个字符被替换为?. 你如何保持表格中的原始字符?我要插入的字符是?; 带腰带的拉丁文小写字母 L。是否可以将此字符添加到表中?

sql-server collation insert t-sql unicode

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

如何在postgres的表上创建`而不是`触发器?

我想在 postgresql 中为一个表创建一个触发器。我的表包含有关事件的数据,包括房间号、开始时间和事件持续时间。在新插入表时,我想检查新事件的房间号在新事件发生时是否会很忙。如果是这样,那么我想引发异常,否则将新事件插入表中。我想将触发器声明为instead of触发器,insert但 postgres 不允许在表instead ofinsert操作触发器(我不想只为触发器创建视图)。

我该如何解决这个问题?理论上我可以创建一个after触发器,然后检查新插入的数据是否有效,如果无效则删除。但这在概念上似乎是错误的方法,实际上也可能是错误的(我不确定触发器是否是原子的,也许有人可能已经根据错误的数据做出了错误的决定)。

这是表定义:

create table room_schedule(
  start_date date,
  start_time time,
  room_no int,
  event_id int,
  duration interval,
  primary key(start_date, start_time, room_no, event_id)
);
Run Code Online (Sandbox Code Playgroud)

这是我的触发器和函数定义:

create or replace function inserttrigfunc() returns trigger as $$
declare count int;

begin

with end_time_table(eid, stime, etime) as (
        select event_id, start_time, (start_time + duration) as etime from room_schedule
        where room_no=new.room_no
    ),
        overlapping_time_table(eid, stime, etime) as(
            select * from end_time_table
            where …
Run Code Online (Sandbox Code Playgroud)

postgresql trigger insert functions

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