Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   anzahl DS begrenzen (https://www.delphipraxis.net/151832-anzahl-ds-begrenzen.html)

khh 3. Jun 2010 09:38

Datenbank: firebird • Version: 2.1 • Zugriff über: zeos

anzahl DS begrenzen
 
hallo zusammen,
gibt es ne Möglichkeit in firebird zu hinterlegen, dass in einer bestimmte Tabelle nicht mehr als x ds gespeichert werden können, oder muss ich das programmtechnisch lösen?

Danke Gruss KHH

mkinzler 3. Jun 2010 09:40

Re: anzahl DS begrenzen
 
Könnte man durch einen Trigger machen. Ich würde aber mal überprüfen, ob das überhaupt sinnvoll ist.

khh 3. Jun 2010 09:43

Re: anzahl DS begrenzen
 
Zitat:

Zitat von mkinzler
Könnte man durch einen Trigger machen. Ich würde aber mal überprüfen, ob das überhaupt sinnvoll ist.

der Sinn der Sache ist, dass es eine "Ligth-version" geben soll, die eben die Anzahl DS begrenzt.

Wie würdest du das über den Trigger umsetzen?

mkinzler 3. Jun 2010 09:59

Re: anzahl DS begrenzen
 
In einem BEFORE INSERT Trigger überprüfen ob die maximale Anzahl schon erreicht ist. Wenn ja Exception auslösen

khh 3. Jun 2010 10:02

Re: anzahl DS begrenzen
 
Zitat:

Zitat von mkinzler
In einem BEFORE INSERT Trigger überprüfen ob die maximale Anzahl schon erreicht ist. Wenn ja Exception auslösen

klaro :-)
ich danke dir


Gruss KHH

idefix2 3. Jun 2010 10:12

Re: anzahl DS begrenzen
 
Eine "Light Version" in der Datenbank zu verankern, ist allerdings vielleicht nicht sehr zielführend, weil ein "drop trigger" im isql fällt bald einmal jemandem ein, und dann ist das light weg. Wenn das halbwegs hacksicher sein soll, würde ich eher im Programm die Recordzahl überprüfen. Oder zumindest bei jedem Programmstart der Lightversion überprüfen, ob die Recordzahl noch unter der Grenze ist, und das Programm abbrechen, wenn es nicht der fall ist.

mkinzler 3. Jun 2010 10:23

Re: anzahl DS begrenzen
 
SQL-Code:
CREATE OR ALTER TRIGGER <Triggername> FOR <Tabellenname>
ACTIVE BEFORE INSERT POSITION 0
AS
  declare cnt integer;
begin
    select count(id) from <Tabellenname> into cnt;
    if (cnt >= 3) then
        exception MAXDS;
end

Vorher Exception erzeugen:

SQL-Code:
CREATE EXCEPTION MAXDS 'Die maximale Anzahl Datensätze ist erreicht';
Ich würde es aber in deinem Fall auch nicht so machen

khh 3. Jun 2010 10:36

Re: anzahl DS begrenzen
 
Zitat:

Zitat von idefix2
Eine "Light Version" in der Datenbank zu verankern, ist allerdings vielleicht nicht sehr zielführend, weil ein "drop trigger" im isql fällt bald einmal jemandem ein, und dann ist das light weg. Wenn das halbwegs hacksicher sein soll, würde ich eher im Programm die Recordzahl überprüfen. Oder zumindest bei jedem Programmstart der Lightversion überprüfen, ob die Recordzahl noch unter der Grenze ist, und das Programm abbrechen, wenn es nicht der fall ist.


ich danke euch,
ich frage die Anzahl jetzt im Programm ab, ist wohl sicherer.


Gruss KHH


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 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