AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi sehr allgemeine frage zu sql

sehr allgemeine frage zu sql

Ein Thema von sancho1980 · begonnen am 11. Feb 2006 · letzter Beitrag vom 11. Feb 2006
Antwort Antwort
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#1

sehr allgemeine frage zu sql

  Alt 11. Feb 2006, 01:45
Datenbank: interbase 6.5 • Zugriff über: ibx, ibexpert
hallo,
angenommen, ich hab eine interbase-datenbank 'datenbank.gdb' mit einer tabelle 'tabelle' mit den feldern 'feld1' und 'feld2'
gibt es sql-statements, die in der lage sind, folgenden constraint festzulegen:

if (feld1 not null) then (feld2 muss null)

ich weiß das klingt n bisschen doof, is aber ne rein hypothetische frage, weil ich meine datenbank wenn möglich so definieren möchte, dass bestimmte felder leer bleiben müssen, wenn bestimmte andere es nicht sind

danke

martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
peter12

Registriert seit: 28. Feb 2005
Ort: Oberneukirchen ,Österreich
183 Beiträge
 
Delphi 2006 Professional
 
#2

Re: sehr allgemeine frage zu sql

  Alt 11. Feb 2006, 06:48
Das kann man in Triggers machen.
Wenn Feld geändert wird wird die Prüfung gemacht.

peter
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#3

Re: sehr allgemeine frage zu sql

  Alt 11. Feb 2006, 09:50
1) kannst du mir bitte mal kurz zeugen, wie die syntax in diesem konkreten fall ('feld1' und 'feld2') auszusehen hätte; hab zwar literatur zu sql aber da sind solche sachen nicht beschrieben; da muss man doch irgendwie ne exception schmeißen können..habe aber keinen plan wie das in sql geht

2) wenn ich einen before-insert-trigger oder einen before-update-trigger erstellen will und dabei 'feld1' eingetragen bzw. verändert werden soll: wie referenziere ich dann diesen wert für 'feld1' (nicht der, der bereits in der datenbank ist, sondern der, der eingetragen wird)?

danke
martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: sehr allgemeine frage zu sql

  Alt 11. Feb 2006, 10:03
Hier das Query zum Erstellen des Triggers (ungetestet):
SQL-Code:
CREATE TRIGGER <triggername> FOR <tabellenname>
BEFORE INSERT
AS
BEGIN
  IF (NEW.<feldname> IS NOT NULL) THEN
    NEW.<zweiterfeldname> = NULL;
END;;
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#5

Re: sehr allgemeine frage zu sql

  Alt 11. Feb 2006, 12:24
Jo das scheint zu funzen.
aber um mir in meinem trigger allzu viel getippse zu ersparen, gibt es vielleicht nen trick, im trigger noch folgendes auszudrücken:

if (new.feld1 not null) then
begin
feld2 = new.feld2
feld3 = new.feld3
alleRestlichenFelderDerTabelle = null
end

many thanx

martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#6

Re: sehr allgemeine frage zu sql

  Alt 11. Feb 2006, 12:30
oder was mir noch lieber wäre, ist, dass der sql-server eine exception an den client zurückgibt, falls ein ungültiger datensatz eingefügt wird; wie geht sowas in sql?
also na dem prinzip:

if (new.feld1 not null) then
if (new.feld2 not null) then
begin
ungültigerRecordException;
abbruch update oder insert;
end;

ihr versteht was ich meine...
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz