Questions tagged «update»

UPDATE更改所有满足条件的行中指定列的值。SET子句中仅需提及要修改的列;未显式修改的列将保留其先前的值。

3
更新json数据类型中的json元素
我不知道如何更新PostgreSQL 9.3数据类型中的元素。 我的例子: CREATE TABLE "user" ( id uuid NOT NULL, password character varying(255), profiles json, gender integer NOT NULL DEFAULT 0, created timestamp with time zone, connected timestamp with time zone, modified timestamp with time zone, active integer NOT NULL DEFAULT 1, settings json, seo character varying(255) NOT NULL, …


1
在必须更新行时,数据库会进行删除还是插入?
因此,今天一位教授告诉我们,当数据库必须在内部(低级)进行更新时,它将进行删除,然后使用已更新的字段进行插入。然后他说这是在所有数据库中完成的,然后我开始讨论,告诉我认为这没有意义,但我没有足够的资源来支持我的职位。他似乎知道很多,但我不明白为什么数据库管理员会这样做。 我的意思是,我知道,如果您更新一个字段并且该行需要更多空间,那么它可能会物理删除该行并将其放在新数据的末尾。但是,例如,如果您减少了使用的空间,为什么要删除它并在最后插入它呢? 这是真的吗?有什么好处?

1
更新另一个表中的所有列
我需要从另一个表更新一个表,并且需要更新所有列。除了列出SET子句中的每一列之外,还有没有办法一次更新所有列?像这样: update tableA set * = tableB.* from tableB where tableA.id = tableB.id 我在psql中尝试过,它不起作用。我必须像这样列出每一列: update tableA set c1 = tableB.c1, c2 = tableB.c2, ... from tableB where tableA.id = tableB.id tableB被创建使用create .. like tableA。因此,它们基本上是相同的。我这样做的原因是,我需要将.csv数据加载到临时表中tableB,然后tableA根据中的新数据进行更新tableB。tableA需要尽可能少地锁定,并且tableA需要保持完整性。我不确定“先删除然后插入”是否是一个好选择?

2
在UPDATE之后触发UPDATE吗?
我想触发一个将任何更新时间记录为: CREATE TRIGGER col_update AFTER UPDATE ON col FOR EACH ROW BEGIN UPDATE col SET updated=NOW() WHERE id=NEW.id; // or OLD.id END 问题在于,当此触发器尝试更新updated列时,它也是另一个运行触发器的更新事件。这将创建一个无限循环,该循环将不起作用。 如何将更新时间存储在相应的列中? 我希望使用触发器,因为表中有很多列。如果尝试手动设置更新时间,则需要修改许多查询。

3
使用CASE选择UPDATE查询中的列?
我可以CASE用来选择要在SELECT查询(Postgres)中显示的列,如下所示: SELECT CASE WHEN val = 0 THEN column_x WHEN val = 1 THEN column_y ELSE 0 END AS update, ... UPDATE在Postgres中执行查询时(即选择应更新哪些列),是否有可能完全相似?我假设没有,因为我对此一无所获,但是也许有人有一个聪明的选择(除了使用过程,还是使用CASE来更新每个列,以确定是应该为该列的值分配一个新值还是简单地重新分配现有值)值)。如果没有简单的选择,我当然也会接受。 额外信息:在我的情况下,我有14列可能要更新的列,每个匹配的行仅更新一个(要更新的表在查询中与另一个连接)。要更新的行数很可能会有所不同,可能是数十行或数百行。我相信加入条件的索引已经到位。

2
使用来自SQL Server中另一个表的值更新表
我的数据库中有2个表。 表格1 ------------------------------------------------------------------------- | name | family | phone | email | gender | phone2 | address | birthdate | ------------------------------------------------------------------------- 表#2 ----------------------------------------- | gender | address | phone | birthdate | ----------------------------------------- 在表#1的列地址和PHONE2是空的和列性别和生日的值是相同的表#2。 我怎样才能读取表#2和更新数据的地址和PHONE2表#1的值从表#2 的地址和电话列时,性别和出生日期是各行中的一样吗? 例如:这是表#1中的一些数据 ------------------------------------------------------------------------- | name | family | phone | email | gender | phone2 …

5
更新所有行
我想知道以最有效的方式针对单个列更新超大型Oracle表中的每一行。例如: update mytable set mycolumn=null; 要么: update mytable set mycolumn=42; 我的知识可能很过时。我要做的是更改表以删除列。然后,我更改表以添加具有我要使用的新值的默认值的列。然后,我更改表以删除该列的默认值。我发现这比运行更新要快得多,但是我觉得有更好的方法。
12 oracle  update 

3
基于同一表的UPDATE表
我有一张带有产品说明的表格,每个产品说明都有一个product_id和一个language_id。我想要做的就是更新所有与字段language_id的2等于同product_id在language_id是1。 到目前为止,我已经尝试了以下查询,但是却收到错误消息,指示MySQL不想更新在子查询中也使用该表的表。 UPDATE products_description AS pd SET pd.products_seo = ( SELECT pd2.products_seo FROM products_description AS pd2 WHERE pd2.language_id = 1 AND pd2.products_id = pd.products_id ) WHERE pd.language_id <> 1 在MySQL中是否有解决此限制的“简单”方法?还是任何“技巧”?我的查询无法正常运作,这有点合逻辑,这让我感到有些惊讶。
12 mysql  update 

6
使用一个更新语句在列中切换值
您发现系统中的错误已在数据库中错误地将男性(M)命名为女性(W),反之亦然。列仅允许一个字符。在不使用任何临时表的情况下,编写一个更新查询来解决此问题。 这个问题是在我最近进行的一次采访中提出的,我打算进行更多可能有类似问题的采访,所以我想对如何处理这个问题有所了解。
12 update 

2
在一个查询中更新具有不同值的多行
我试图了解如何用不同的值更新多行,但我不明白。解决方案无处不在,但对我来说似乎很难理解。 例如,将两个更新更新为1个查询: UPDATE mytable SET fruit='orange', drink='water', food='pizza' WHERE id=1; UPDATE mytable SET fruit='strawberry', drink='wine', food='fish' WHERE id=2; 我不了解CASE WHEN .. THEN ... END的工作原理以及如何使用它。 想知道是否有人可以帮助我。
12 mysql  update 


5
为什么此UPDATE会因唯一的键约束冲突而失败?
我是一个“偶然的” DBA,相对缺乏经验并且对此问题感到困惑。 运行MS SQL Server2012。问题在于此UPDATE语句: UPDATE dbo.tAccts SET Ticket = 'ARP.ExGE' , Method = 'smtp' , AcctOwner = 'r00417819' , DisplayName = '~AppLight HBSFax-Inactive' , Destination = 'r00417819@mail.ad.ge.com' , UpdatedBy = SYSTEM_USER , UpdatedOn = CAST(GetDate() AS DATE) FROM dbo.vReclaimable WHERE OHR_EmpStatus <> 'A' 哪个应该只更新vReclaimable视图返回的tAccts表中的行。 vReclaimable视图基于tAccts表,并返回tAccts中的行的子集。 当我运行它时,它会失败并出现一个唯一的关键错误: (0 row(s) affected) …

1
锁定Postgres以进行UPDATE / INSERT组合
我有两张桌子。一个是日志表;另一个是日志表。另一个实质上包含只能使用一次的优惠券代码。 用户需要能够兑换优惠券,这将在日志表中插入一行并将优惠券标记为已使用(通过将used列更新为true)。 自然,这里存在明显的比赛条件/安全性问题。 在过去的mySQL世界中,我做过类似的事情。在那个世界中,我将全局锁定两个表,在一次只能执行一次的前提下,确保逻辑安全,然后在完成后解锁表。 Postgres中有更好的方法吗?特别是,我担心锁是全局的,但不一定是全局的-我真的只需要确保没有其他人试图输入该特定代码,那么也许行级锁会起作用吗?

3
级联主键更新为所有引用的外键
是否可以通过在引用该引用的所有外键之间级联更新来更新主键列值? #编辑1: 当我运行followinq查询 select * from sys.foreign_keys where referenced_object_id=OBJECT_ID('myTable') ,我看到update_referential_action设置为0。因此,在更新主键列之后不执行任何操作。如何更新外键以使其成为CASCADE UPDATE? #编辑2: 为了脚本化脚本中所有外键的创建或删除,请运行以下脚本(从此处获取) DECLARE @schema_name sysname; DECLARE @table_name sysname; DECLARE @constraint_name sysname; DECLARE @constraint_object_id int; DECLARE @referenced_object_name sysname; DECLARE @is_disabled bit; DECLARE @is_not_for_replication bit; DECLARE @is_not_trusted bit; DECLARE @delete_referential_action tinyint; DECLARE @update_referential_action tinyint; DECLARE @tsql nvarchar(4000); DECLARE @tsql2 nvarchar(4000); DECLARE …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.