标签: sql-update

SQL Server 2005自动更新的DateTime列 - LastUpdated

我定义了一个表(参见下面的代码片段).如何添加约束或其他任何内容,以便在更改行时随时更新LastUpdate列?

CREATE TABLE dbo.Profiles
(
        UserName                                varchar(100)            NOT NULL,
        LastUpdate                              datetime                NOT NULL  CONSTRAINT DF_Profiles_LastUpdate DEFAULT (getdate()),
        FullName                                varchar(50)             NOT NULL,
        Birthdate                               smalldatetime           NULL,
        PageSize                                int                     NOT NULL CONSTRAINT DF_Profiles_PageSize DEFAULT ((10)),
        CONSTRAINT PK_Profiles PRIMARY KEY CLUSTERED (UserName ASC),
        CONSTRAINT FK_Profils_Users FOREIGN KEY (UserName) REFERENCES dbo.Users (UserName) ON UPDATE CASCADE ON DELETE CASCADE  
)
Run Code Online (Sandbox Code Playgroud)

database sql-server timestamp sql-update

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

在UPDATE查询中使用SELECT

如何在Microsoft Access 2007 UPDATE中使用SELECT查询结果的表的字段.

这是选择查询:

SELECT Min(TAX.Tax_Code) AS MinOfTax_Code
FROM TAX, FUNCTIONS

WHERE (((FUNCTIONS.Func_Pure)<=[Tax_ToPrice]) AND ((FUNCTIONS.Func_Year)=[Tax_Year]))

GROUP BY FUNCTIONS.Func_ID;
Run Code Online (Sandbox Code Playgroud)

这是更新查询:

UPDATE FUNCTIONS

 SET FUNCTIONS.Func_TaxRef = [Result of Select query]
Run Code Online (Sandbox Code Playgroud)

sql ms-access-2007 sql-update

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

Mysql暂时压制唯一索引

我有一个在两列上有唯一索引的表,id_parent和sort_order是准确的

+----+-----------+------------+-------------+-------------+-------------+
| id | id_parent | sort_order | some_data   | other_data  | more_data   |
+----+-----------+------------+-------------+-------------+-------------+
| 1  |         1 |          1 | lorem ipsum | lorem ipsum | lorem ipsum |
| 2  |         1 |          2 | lorem ipsum | lorem ipsum | lorem ipsum |
| 3  |         1 |          3 | lorem ipsum | lorem ipsum | lorem ipsum |
+----+-----------+------------+-------------+-------------+-------------+
Run Code Online (Sandbox Code Playgroud)

现在我想一次性更新它们,它们的数据和sort_order.1 - 2 - 3例如,sort_order将从更改为2 - 3 - 1.

但是,当我开始运行更新语句时,唯一索引阻止我,就像预期的那样,说我不能有两行id_parent …

mysql sql indexing sql-update

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

带分组的SQL Server更新

 insert into tableA (column1) 
 select min(tableC.column1)
 from tableB 
 inner join tableC on (tableC.coumn2 = tableB.column1
 and tableB.column2 = tableA.column2) 
 group by tableA.column2
Run Code Online (Sandbox Code Playgroud)

如何根据条件将上述内容更改为group by而不是insert with group tableB.column2 = tableA.column2

请注意我正在使用 SQL SERVER 2008.

sql group-by sql-server-2008 sql-update

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

使用PostgreSQL中的查询结果更新列

我在PostgreSQL 9.2中有下表,其中包含时间戳:

GID [PK](BIGSERIAL),timestamp_mes(时间戳没有时区),time_diff(间隔)
1,2012-01-23 11时03分40秒,空
2,2012-01-23 11时03分42秒,空
3, 2012-01-23 11:03:44,空的

我添加了一个间隔列(time_diff),并希望用此查询产生的时差值填充它:

SELECT timestamp_mes - lag(timestamp_mes, 1) 
over (order by timestamp_mes) as diff
from gc_entretien.trace order by timestamp_mes
Run Code Online (Sandbox Code Playgroud)

我尝试了以下查询来更新time_diff列,但没有成功:

UPDATE gc_entretien.trace set time_diff = 
(SELECT trace.timestamp_mes - lag(trace.timestamp_mes, 1) 
over (order by trace.timestamp_mes) 
from gc_entretien.trace order by timestamp_mes);
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

错误:用作表达式的子查询返回的多行

我应该如何使用时差查询生成的值更新time_diff列?

sql database postgresql sql-update postgresql-9.2

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

Mysql:更新最新记录的字段

我正在尝试更新名称所在的最新记录John(John具有多个记录但ID不同),但我似乎处于绑定状态.我的查询有什么问题?

UPDATE messages_tbl SET is_unread=1
WHERE ReceiveTime = (SELECT MAX(ReceiveTime) FROM messages_tbl WHERE name='John')
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做这样的事情?

mysql sql sql-update

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

使用ORDER BY更新

需要"配合" UPDATEORDER BY.我正在尝试使用游标,但得到错误:

cursor "cursupd" doesn't specify a line,
SQL state: 24000
Run Code Online (Sandbox Code Playgroud)

码:

BEGIN;
    DECLARE cursUpd CURSOR FOR SELECT * FROM "table" WHERE "field" = 5760 AND "sequence" >= 0 AND "sequence" < 9 ORDER BY "sequence" DESC;
    UPDATE "table" SET "sequence" = "sequence" + 2 WHERE CURRENT OF cursUpd;
    CLOSE cursUpd;
COMMIT;
Run Code Online (Sandbox Code Playgroud)

怎么做正确?

更新1

没有光标,当我这样做时:

UPDATE "CableLinePoint" AS "t"
SET "sequence" = t."sequence" + 2
from (
    select max("sequence") "sequence", "id"
    from "CableLinePoint"
    where
        "CableLine" = …
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-order-by sql-update

13
推荐指数
2
解决办法
4万
查看次数

Hibernate @DynamicUpdate(value = true)@SelectBeforeUpdate(value = true)性能

我开始在我的APP中使用这2个休眠注释.

@DynamicUpdate(value=true)
@SelectBeforeUpdate(value=true) 
Run Code Online (Sandbox Code Playgroud)

首先,我将尝试解释我对它的理解,以了解我是否正确.

@DynamicUpdate(value=true)
Run Code Online (Sandbox Code Playgroud)

仅更新modified values实体中的内容Hibernate needs to track those changes

@SelectBeforeUpdate(value=true)
Run Code Online (Sandbox Code Playgroud)

创建一个select之前update知道哪些属性已被更改,这在实体已在不同会话上加载和更新时很有用Hibernate is out of tracking entity changes

这2个肯定是否正确?

我主要担心的是.

DB performance哪个更好或更快地更新所有的实体领域的一次generate a select to know which columns update and update only the modified columns?

java select hibernate sql-update

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

使用MySQL触发器插入新记录后更新表列

想象一下,我有一个MySQL表(tbl_test),其中包含以下字段:id,title,priority.
id将自动递增.我需要在插入后使用与id字段相同的值填充优先级字段. 由于我是使用MySQL触发器的新手,请告诉我我要为它编写的内容.我做了一些事情,但我认为这不是真的:

CREATE TRIGGER 'test' AFTER INSERT ON `tbl_test`
BEGIN
   SET new.priority = new.id;
END
Run Code Online (Sandbox Code Playgroud)

谢谢你的协助.

mysql triggers insert sql-update

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

如何在SQLite中有条件地插入或替换行?

我想插入或替换_on_condition.如果不满足条件,请勿插入或更换.这可能吗?

对于我的项目,我目前有两个数据收集过程.一个是快速但不能抓住一切.另一个是缓慢但捕获一切.通过快速流程,我几乎可以实时获取数据.由于速度慢,我在一天结束时使用批处理获取数据.

我的问题是:有时快速流程将"完成"一条记录(意味着它不再需要更新)在缓慢的流程之前,以及在夜间批处理过程中的当天晚些时候,"完整"记录将被替换为在慢速流程的批量数据中找到过时的"待定"记录.

我想要的是一个类似于这个伪代码的条件检查:

If(record_is_not_complete or does_not_exist) 
{ INSERT or REPLACE; }
Else 
{ do_nothing and move_to_the_next; }
Run Code Online (Sandbox Code Playgroud)

如果我从标准INSERT OR REPLACE示例开始:

INSERT OR REPLACE INTO UserProgress (id, status, level) 
  VALUES (1, 'COMPLETE', 5);
Run Code Online (Sandbox Code Playgroud)

哪个应该在UserProgress表中输入一行,条目为[1,COMPLETE,5].

如果发生以下情况:

INSERT OR REPLACE INTO UserProgress (id, status, level) 
  VALUES (1, 'PENDING', 4);
Run Code Online (Sandbox Code Playgroud)

我希望它跳过这个,因为已经有一个完整的记录.

我确定这是一个重复的问题.但它真的吗?这个问题有很多答案,我不确定哪种方法最好.看看我发现的所有这些例子:

我可以尝试添加一个CASE声明,我被告知它等同于一个IF-THEN-ELSE声明.正如本例中所做的那样.

我可以尝试使用SELECTCOALESCE声明VALUES.正如本例中所做的那样.

我甚至可以尝试使用一个SELECT WHERE声明.正如本例中所做的那样.

我可以尝试使用一个LEFT JOIN声明.正如本例中所做的那样.

这对SQLite来说很棒.似乎有多种方法可以为同一只猫皮肤涂抹.我是一个新手我现在很困惑.目前尚不清楚我应该使用哪种方法.

我正在寻找一个可以在一个sql语句中完成的解决方案.

*更新*

我找到了两个交易解决方案.我还在寻找单一的交易解决方案.

这有效,但使用两个事务: …

.net c# sql sqlite sql-update

13
推荐指数
1
解决办法
2509
查看次数