AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Daten innerhalb einer Tabelle vervielfältigen
Thema durchsuchen
Ansicht
Themen-Optionen

Daten innerhalb einer Tabelle vervielfältigen

Ein Thema von PistolenPeter · begonnen am 28. Mai 2015 · letzter Beitrag vom 28. Mai 2015
Antwort Antwort
PistolenPeter

Registriert seit: 11. Jun 2010
9 Beiträge
 
#1

AW: Daten innerhalb einer Tabelle vervielfältigen

  Alt 28. Mai 2015, 13:02
@Mikkey:
Funktioniert leider nicht.
Es gibt ein Update für eine Zeile, aber die Daten in der Tabelle ändern sich nicht.

@mkinzler:
Das klappt leider auch nicht. Oracle sagt:
SQL-Fehler: ORA-01779: cannot modify a column which maps to a non key-preserved table
01779. 00000 - "cannot modify a column which maps to a non key-preserved table"
*Cause: An attempt was made to insert or update columns of a join view which
map to a non-key-preserved table.
*Action: Modify the underlying base tables directly.

Wenn ich das richtig verstehe, funktioniert das nur, wenn es einen Primärschlüssel gibt UND dieser in dem JOIN enthalten ist.

Grüße
PistolenPeter
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Daten innerhalb einer Tabelle vervielfältigen

  Alt 28. Mai 2015, 13:16
Das habe ich berfürchtet

null ist nicht das selbe wie 0

SQL-Code:
Update tabelle tu
Set E=(Select E FROM tabelle tl WHERE tl.A=tu.A and tl.B=tu.B and tl.B=tu.B AND tl.G is not null),
    F=(Select F FROM tabelle tl WHERE tl.A=tu.A and tl.B=tu.B and tl.B=tu.B AND tl.G is not null)
WHERE tu.G is null;
Markus Kinzler
  Mit Zitat antworten Zitat
PistolenPeter

Registriert seit: 11. Jun 2010
9 Beiträge
 
#3

AW: Daten innerhalb einer Tabelle vervielfältigen

  Alt 28. Mai 2015, 14:22
Das habe ich berfürchtet

null ist nicht das selbe wie 0

SQL-Code:
Update tabelle tu
Set E=(Select E FROM tabelle tl WHERE tl.A=tu.A and tl.B=tu.B and tl.B=tu.B AND tl.G is not null),
    F=(Select F FROM tabelle tl WHERE tl.A=tu.A and tl.B=tu.B and tl.B=tu.B AND tl.G is not null)
WHERE tu.G is null;
Das klappt. Und ich verstehe sogar was da passiert

Vielen Dank!
PistolenPeter

Geändert von PistolenPeter (28. Mai 2015 um 14:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Daten innerhalb einer Tabelle vervielfältigen

  Alt 28. Mai 2015, 14:20
01779. 00000 - "cannot modify a column which maps to a non key-preserved table"
*Cause: An attempt was made to insert or update columns of a join view which
map to a non-key-preserved table.
*Action: Modify the underlying base tables directly.
Bei der Tabelle handelt es sich um einen View und nicht um eine Tabelle?

(Naja ein PK ist eigentlich nie falsch, auch wenn er nur eine "Zeilennummer" ist)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
PistolenPeter

Registriert seit: 11. Jun 2010
9 Beiträge
 
#5

AW: Daten innerhalb einer Tabelle vervielfältigen

  Alt 28. Mai 2015, 14:24
Bei der Tabelle handelt es sich um einen View und nicht um eine Tabelle?
Hallo K-H,

nein, es ist kein View, aber durch den JOIN entseht ja so etwas wie ein View.

Grüße
Peter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz