質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
A5:SQL Mk-2

A5:SQL Mk-2は、フリーのSQL開発ツールです。高機能で軽量、且つ分かりやすいことを目指して開発されました。SQLの実行やテーブル編集などの機能に加え、簡単な操作によりDB定義書やER図を自動生成することも可能です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

7321閲覧

A5SQLで、VIEWテーブルにレコードの追加ができません。

gomes_2222

総合スコア94

A5:SQL Mk-2

A5:SQL Mk-2は、フリーのSQL開発ツールです。高機能で軽量、且つ分かりやすいことを目指して開発されました。SQLの実行やテーブル編集などの機能に加え、簡単な操作によりDB定義書やER図を自動生成することも可能です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/04/07 14:21

前提・実現したいこと

A5SQLにビューテーブルが有り、それにレコードを追加したいのですが、レコードの追加ができません。どうしたらいいのでしょうか?どこからどこまでが仕様なのかがわからないので、知恵を貸してください。

発生している問題・エラーメッセージ

A5SQLで作成したVIEWテーブル(SAMPLE)のデータタブからレコードを追加すると、SELECT文の引用元のテーブル(VIEW)にレコードが追加されるが、VIEWテーブル(SAMPLE)のデータタブにレコードが表示されない。

上記の状態で同じレコードを追加しようとすると以下のエラーでてレコード追加できなません
ORA-00001: 一意制約に反しています。

※今回のカラムは2つともキーとしています。

該当のソースコード

DBなのでテーブルを作成したときのSQL文を掲載します。

CREATE OR REPLACE FORCE EDITIONABLE VIEW "TARO"."SAMPLE" ("DATAA", "DATAB") AS SELECT A.DATAA , A.DATAB FROM VIEW A

試したこと

再読込すればレコードが表示されるかと思い、A5SQLを一度閉じて開いても変わりません。
そもそもビューテーブルにレコードが表示されない仕様なのかと思いましたが、過去に別の先輩が作成したVIEWテーブルには、普通にデータタブからレコードの追加、編集ができているので、そういうわけでもないのかと思いました。
どなたかわかる方いますか?お願いいたします。

補足情報(FW/ツールのバージョンなど)

A5SQL Version 2.15.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/08 01:03 編集

A5:SQL mk-IIの話というよりも、まずはデータベースが何か、バージョンとともに示してほしいかも。じゃないと、A5:SQL mk-IIがダメなら別のツールを使えばいいじゃないって話になるよ? HeidiSQL使う?
sazi

2021/04/08 01:50

回答してから、思ったけど、A5SQLというのはDBではなく単なるDBツールという事を理解されていないんでしょうか。
guest

回答1

0

ベストアンサー

ビューをネストしたビューですか。
リファレンスには一つの表とありますから元にしているView次第じゃないでしょうか。
元にしているVIEWが更新できたとしたら、ネストが関係しているのかもしれません。

どこからどこまでが仕様なのかがわからない

リファレンスンの確認を怠っては駄目です。
CREATE VIEW

更新可能なビューの注意事項

次の注意事項は、更新可能なビューに適用されます。

更新可能なビューとは、実表の行を挿入、更新または削除できるビューです。更新可能なビューを作成するか、またはビューにINSTEAD OFトリガーを作成して更新可能にすることができます。> 更新可能なビューの列を更新する方法を確認するには、USER_UPDATABLE_COLUMNSデータ・ディクショナリ・ビューを問い合せます。このビューで表示される情報は、更新可能なビューのみに意味があります。ビューを更新可能にするには、次の条件が満たされている必要があります。

・ビューの各列は、単一表の列にマップする必要があります。たとえば、ビューの列がTABLE句の出力にマップする場合(コレクション・ネスト解除)、ビューは更新可能ではありません。

・ビューには、次の構造体が含まれていない必要があります。

集合演算子
DISTINCT演算子
集計ファンクションまたは分析ファンクション
GROUP BY、ORDER BY、MODEL、CONNECT BYまたはSTART WITH句
SELECT構文のリストにあるコレクション式
SELECT構文のリストにある副問合せ
WITH READ ONLYが指定された副問合せ
結合(一部の例外を除く。詳細は、『Oracle Database管理者ガイド』を参照してください。)
更新可能なビューが疑似列または式を含む場合は、これらの疑似列または式を参照するUPDATE文を使用して、実表の行を更新できません。

・結合ビューを更新可能にする場合、次のすべての条件が満たされている必要があります。

 ・DML文は、結合の基になる1つの表のみに影響する。

 ・INSERT文で、WITH CHECK OPTIONを指定してビューを作成しておらず、値が挿入されたすべての列がキー保存表の列である。実表の各主キーまたは一意キーの値に対するキー保存表は、結合ビューで一意である。

 ・UPDATE文で、WITH CHECK OPTIONを指定してビューを作成しておらず、更新されるすべての列はキー保存表から抽出されている。

 ・DELETE文の場合、結合によって複数のキー保存表が作成されると、ビューがWITH CHECK OPTIONを指定して作成されたかどうかにかかわらず、FROM句に指定された最初の表から削除されます。

投稿2021/04/08 01:46

編集2021/04/08 01:48
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問