タグ付けされた質問 「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
MySQLの既存のトリガー定義を変更することはできますか?
MySQLでトリガー定義を更新できるかどうか疑問に思っています。たとえば、トリガーTがあり、いくつかの新しい機能を追加したいです。 私の想定では、ドロップして再作成する必要があります。 このようなシナリオのデータベース管理のベストプラクティスは何ですか?
14 mysql  trigger  update 

1
行を更新する必要がある場合、データベースは削除と挿入を行いますか?
そこで、今日、教授は、データベースが更新を行う必要がある場合、内部で(低レベルで)削除し、更新されたフィールドで挿入することを教えてくれました。それから彼は、これはすべてのデータベースで行われたものであると言い、それから私はそれが意味がないと思ったが、自分の立場をサポートするのに十分なリソースがなかったと話し始めました。彼は多くのことを知っているようですが、なぜdbsがそうするのか理解できません。 つまり、フィールドを更新し、その行にさらにスペースが必要な場合は、物理的に行を削除し、新しいデータで最後に配置することを知っています。しかし、たとえば使用するスペースを減らした場合、なぜ削除して最後に再挿入するのでしょうか? これは本当ですか?利点は何ですか?

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更新する必要があるからです。ロックをできるだけ少なくする必要があり、整合性を維持する必要があります。「削除してから挿入」が良い選択肢かどうかわかりませんか?tableAtableBtableAtableA

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, ... UPDATEPostgresでクエリを実行するときに、同様のことは可能ですか(更新する列を選択してください)。私はこれについて何も見つけることができなかったのではないと思いますが、誰かが賢い代替手段を持っていると思います(手順を使用するか、CASEを使用して各列を更新して、列の値に新しい値を割り当てるか、単に既存の列を再割り当てするかを決定する以外に値)。簡単な選択肢がない場合は、もちろんそれも答えとして受け入れます。 追加情報:私の場合、更新される可能性のある14の潜在的な列があり、一致する行ごとに1つだけが更新されます(更新されるテーブルはクエリで別のテーブルと結合されます)。更新する行の量はおそらく異なり、数十または数百になる可能性があります。結合条件の指標は整っていると思います。

2
SQL Serverの別のテーブルの値を使用してテーブルを更新する
データベースに2つのテーブルがあります。 表1 ------------------------------------------------------------------------- | name | family | phone | email | gender | phone2 | address | birthdate | ------------------------------------------------------------------------- テーブル#2 ----------------------------------------- | gender | address | phone | birthdate | ----------------------------------------- テーブル#1の列ではaddressとphone2は空で、列の性別と生年月日の値はテーブル#2と同じです。 どのように私はテーブル#2及び更新からデータを読み取ることができますアドレスとphone2のテーブル#2からの値を持つテーブル#1でのアドレスと電話するとき、列を性別と誕生日が各行に同じですか? 例:これは表#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_idlanguage_id1 これまでのところ、次のクエリを試しましたが、テーブルがサブクエリでも使用されているテーブルを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
1つの更新ステートメントで列の値を切り替える
システムのエラーにより、データベースで男性(M)を女性(W)に、またはその逆に誤って命名していることがわかりました。列には1文字しか入力できません。一時テーブルを使用せずに、これを解決する更新クエリを1つ記述します。 この質問は、最近行ったインタビューで尋ねられました。同様の質問がある可能性があるインタビューをさらに調査するため、これをどのように処理するかについてのアイデアを得たいと思いました。
12 update 

2
1つのクエリで異なる値を持つ複数の行を更新する
異なる値を持つ複数の行を更新する方法を理解しようとしていますが、取得できません。解決策はどこにでもありますが、私には理解するのが難しいようです。 たとえば、1つのクエリへの2つの更新: 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 

2
UPDATEステートメントのOUTPUTをローカル変数に送る
私はこれをしたいと思います: DECLARE @Id INT; UPDATE Logins SET SomeField = 'some value' OUTPUT @Id = Id WHERE EmailAddress = @EmailAddress -- this is a parameter of the sproc これは可能ですか?ローカルテーブル変数を宣言してそこに出力を送信できることはわかっていますが、可能であればスキップすることをお勧めします

5
この更新が一意キー制約違反で失敗するのはなぜですか?
私は「偶然の」DBAであり、比較的経験が浅く、この問題に困惑しています。 MS SQL Server 2012を実行しています。問題はこの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の組み合わせのロック
テーブルが2つあります。1つはログテーブルです。もう1つには、基本的に1回しか使用できないクーポンコードが含まれています。 ユーザーはクーポンを利用できる必要があります。これにより、ログテーブルに行が挿入され、クーポンが使用済みとしてマークされます(used列をに更新することによりtrue)。 もちろん、ここには明らかな競合状態/セキュリティ問題があります。 私は過去にもmySQLの世界で同様のことをしたことがあります。その世界では、両方のテーブルをグローバルにロックし、これは一度に1回だけ発生する可能性があるという知識のもとでロジックを安全に実行し、完了したらテーブルのロックを解除します。 Postgresでこれを行うより良い方法はありますか?特に、ロックがグローバルであることを心配していますが、グローバルである必要はありません。他の誰かがその特定のコードを入力しようとしていないことを確認するだけでよいので、行レベルのロックが機能するでしょうか?

3
参照するすべての外部キーへの主キー更新のカスケード
それを参照するすべての外部キー間で更新をカスケードして主キー列の値を更新することは可能ですか? #編集1: followinqクエリを実行すると select * from sys.foreign_keys where referenced_object_id=OBJECT_ID('myTable') 、update_referential_actionが0に設定されていることがわかります。したがって、主キー列を更新した後は何も行われません。外部キーを更新してCASCADE UPDATEでそれらを作成するにはどうすればよいですか? #EDIT 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); …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.