タグ

oracleに関するagat18kのブックマーク (6)

  • ORA-01779 BYPASS_UJVC - shodai memo

    結合ビュー(Join View)に対してUPDATEを実施すると、2つの表の主キーが一致しておらず内容的にも重複がある可能性がある(対象表の同一行を複数回更新する)場合に発生する。 ORA-01779: 複数表にマップする列を変更できません。(Oracle8iの場合) キー保存されていない表にマップする列は変更できません(Oracle9iの場合) 原因: キー保存されていない表にマップする結合ビューの列を挿入または更新しようとしました。 処置: 基礎となる実表を直接変更してください。 結合キーが一意でない結合ビュー(Join View)に対して UPDATEを実施したい場合、Oracle8i以降の環境では BYPASS_UJVCというヒントを付けて実行するとORA-1779エラーがしない。 実際にデータ上重複することなくても、オラクルがそのように判断する事があるので、これを回避するためのも

    ORA-01779 BYPASS_UJVC - shodai memo
  • MERGE - オラクル・Oracle SQL 入門

    SQL 入門 (DMLの基形式:MERGE) 行の挿入と更新を 1ステートメントで行なう ( MERGE = UPDATE + INSERT ) 行の挿入と更新を1ステートメントで行なう。他の DBMS では REPLACE の場合もある。 UPDATE と INSERT をもじって、UPSERT とも呼ばれる。(モデルファンクション内でも UPSERT のキーワードがある) テーブルからテーブルにデータをエントリー(または更新)する 人事システムから最新のマスタ (USER_MASTER_IMPORT) を取得してきた。(と仮定する) これを USER_MASTER に最新として反映させる。新規レコードには、名前に'(新人)'を付与する。 MERGE INTO USER_MASTER USING USER_MASTER_IMPORT ON ( USER_MASTER.USER_ID =

  • 連続した複数の連番を取得する - オラクル・Oracleをマスターするための基本と仕組み

    連続した複数のシーケンス番号を一括して取得する方法 シーケンスは順序値を生成する便利な機能であるが、複数セッションから同時に 連続した複数のシーケンス番号 を発番しているような処理の場合にはセッション間で番号が互い違いになる可能性がある。 これを回避するためにアプリケーションによるロック機構を使用し採番処理を直列化(シリアライズ/シリーズ 化)することで 同時処理を制限する。 しかし、代償として来は並列可能な処理を排他処理で直列化することによる同時実行性能が低下する可能性がある。 シーケンスのシリアライズを実現するためにアプリケーションによるロック(アプリケーション・ロック/ユーザー・ロック)を使用する。 Oracle にはユーザー・ロックを使用するためのパッケージ (DBMS_LOCK) が用意されている。 (初期状態では PUBLIC に対して呼び出し権限が付与されていないので使用す

  • UTL_I18N

  • トリガーの定義 (DML Event Trigger) - オラクル・Oracleをマスターするための基本と仕組み

    トリガーの定義 (DML Event Trigger) Top | Knowledge| DB構築| 文字列関数| 日付関数| 集計関数| SQL関数(アルファベット順) SQL(抽出・更新)| SQL*Plus| PL/SQL| Utility| Structure| スキーマ| チューニング| 用語| 参考書 トリガーの定義(行トリガー、文トリガー) トリガーとは、データの変更などのイベントによって発火(トリガー)して処理するイベント・ドリブン(イベント駆動式)なモジュールのことである。 トリガーの基構文 (DML トリガーの場合) 行トリガーとは、DML によって影響受けた行単位でトリガーを発生させる。 文トリガーは、DML 単位に発生するトリガーである。 トリガーの構文 CREATE [OR REPLACE] TRIGGER trigger_name { BEFORE | AFT

  • order byした後にrownumを付加する | Oracle | 株式会社CONFRAGE

    SQLではorder by句を指定して検索結果をソートすることが出来ます。 また、検索結果に対してシーケンシャルな番号を振るrownumという特別なフィールドがあります。 この二つを同時に使用すると、まず検索結果の各行に対してrownumがふられ、その次にorder byが実行されるため、rownumの順番が滅茶苦茶になってしまいます。 SELECT emp_id,rownum FROM employee; このSQLを実行すると結果は下図のようになります。 <<table1>> このSQLに対してorder byを指定すると、SQLは下記のようになります。 SELECT emp_id,rownum FROM employee order by emp_id; このSQLを実行すると結果は下図のようにrownumが滅茶苦茶な順序になってしまいます。 <<table2>> コーディングをして

  • 1