Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Variable in Function (https://www.delphipraxis.net/180837-variable-function.html)

himitsu 23. Jun 2014 12:04

AW: Variable in Function
 
Zitat:

Zitat von p80286 (Beitrag 1263234)
P.S. soetwas wie SQUENCES oder AUTOINC gibt es in MySQL nicht?

http://dev.mysql.com/doc/refman/5.1/...increment.html

[edit]
hmmmm :gruebel:

Dejan Vu 23. Jun 2014 12:09

AW: Variable in Function
 
[QUOTE=Nersgatt;1263235...Die Kollegen verwenden ein Persistenzframework (*), welches die Vergabe der IDs eben mit dieser Tabelle realisiert hat...[/QUOTE] Es sollte ein Gesetz gegen diesen Blödsinn geben. Das ist so dermaßen lahm... Egal. Esis wie esis

Nersgatt 23. Jun 2014 12:15

AW: Variable in Function
 
Zitat:

Zitat von Dejan Vu (Beitrag 1263238)
Zitat:

Zitat von Nersgatt (Beitrag 1263235)
...Die Kollegen verwenden ein Persistenzframework (*), welches die Vergabe der IDs eben mit dieser Tabelle realisiert hat...

Es sollte ein Gesetz gegen diesen Blödsinn geben. Das ist so dermaßen lahm... Egal. Esis wie esis

Auf welchen Aspekt beziehst Du Dich jetzt? Auf die Verwendung eines Persistenzframeworks, oder auf die Art und weise, wie die IDs verwaltet werden?
Ich finde es auch unglücklich, dies mit einer Tabelle zu machen, wenn die Datenbank dafür besser geeignete Mechanismen anbietet (wie z.B. Sequences). Aber in meinem Fall sind es halt Gegebenheiten, mit denen ich leben muss.

jaevencooler 23. Jun 2014 14:22

AW: Variable in Function
 
Moin, Moin,

ich habe auf meiner mySQL Instance die fehlenden Sequencen aus der Oracle wie folgt "ersetzt" :
Code:
DELIMITER $$

CREATE DEFINER=`root`@`localhost` FUNCTION `nextval`(`seq_name` varchar(100)) RETURNS bigint(20)
BEGIN
  declare cur_val bigint(20);

  SELECT sequence_cur_value
  INTO cur_val
  FROM gemiii.sequence_data
  WHERE sequence_name = seq_name;

  IF cur_val IS NOT NULL THEN
    UPDATE gemiii.sequence_data
    SET sequence_cur_value = IF ( (sequence_cur_value + sequence_increment) > sequence_max_value,
                                  IF ( sequence_cycle = TRUE,
                                       sequence_min_value,
                                       NULL
                                     ),
                                  sequence_cur_value + sequence_increment
                                )
    WHERE sequence_name = seq_name;
  END IF;

  RETURN cur_val;
END

die Tabelle dazu sieht folgt aus :

CREATE TABLE `sequence_data` (
  `sequence_name` varchar(100) NOT NULL,
  `sequence_increment` int(11) unsigned NOT NULL DEFAULT '1',
  `sequence_min_value` int(11) unsigned NOT NULL DEFAULT '1',
  `sequence_max_value` bigint(20) unsigned NOT NULL DEFAULT '18446744073709551615',
  `sequence_cur_value` bigint(20) unsigned DEFAULT '1',
  `sequence_cycle` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`sequence_name`),
  UNIQUE KEY `sequence_name_UNIQUE` (`sequence_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
funktioniert recht gut !

Beste Grüße Michael

Dejan Vu 24. Jun 2014 07:49

AW: Variable in Function
 
Zitat:

Zitat von Nersgatt (Beitrag 1263242)
Zitat:

Zitat von Dejan Vu (Beitrag 1263238)
Es sollte ein Gesetz gegen diesen Blödsinn geben. Das ist so dermaßen lahm... Egal. Esis wie esis

Auf welchen Aspekt beziehst Du Dich jetzt? Auf die Verwendung eines Persistenzframeworks, oder auf die Art und weise, wie die IDs verwaltet werden?...

Natürlich nur, wie die IDs verwaltet werden. Aber ich schrieb ja auch: 'Esis wie esis'. ('Es ist, wie es ist').


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr.
Seite 2 von 2     12   

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