AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird Blob Sub_type text kein primary key möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Blob Sub_type text kein primary key möglich?

Ein Thema von Monday · begonnen am 5. Jul 2022 · letzter Beitrag vom 6. Jul 2022
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.436 Beiträge
 
Delphi 12 Athens
 
#1

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 06:33
Zitat:
Auf ein Feld mit dem Datentyp "blob sub_type text" bzw. "blob sub_type 1" ist es nicht möglich ein Primary key oder unique anzulegen.
...auch wenn du am Ausprobieren bist...ein Primary Key ist (sollte ) immer eine Zahl sein...weil eindeutig pro Tabelle, besser Datenbank global über den Generator des Firebird. Der Feldname des Keys sollte irgendetwas mit *ID* sein. Texte als eindeutigen Key anzulegen ist *bäääh* ... auch wenn es möglich ist.

  Mit Zitat antworten Zitat
Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 08:05
Ok, Danke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#3

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 09:15
Jupp, wolle ich auch grade anmerken.

Zumindestens AUTOINC ist da eher unpraktisch.

Man könnte aber stattdessen einen TIMESTAMP (current_timestamp) verwenden, das ist zemlich unterschiedlich, da es hoffentlich nicht oft vorkommt, dass INSERT in zwei DBs auf die Millisekunde gleichzeitig passiert.
Oder im VARCHAR z.B. TimeStamp+Loginname.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.436 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 09:23
Ok, ok...ich hatte ne schwere Kindheit.

Man könnte auch eine GUID (eindeutig weltweit) verwenden. Ist ja im "Prinzip" darstellungstechnisch auch ein "Text".

Zitat:
wo man Daten serverübergreifend abgleichen soll
...wir reden über die ersten Schritte des TE. Aber Recht hast du trotzdem...

Geändert von haentschman ( 6. Jul 2022 um 09:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#5

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 09:26
UUIDs sind auch eine Alternative, wenn man ein paar Dinge beachtet: https://tomharrisonjr.com/uuid-or-gu...l-7b2aa3dcb439
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#6

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 12:57
Man kann auch die GUID/UUID als ID nutzen, auch für Syncro,
und zusätzlich noch einen INT/BIGINT für die Lokalen Verknüfungen.

In der Syncro nutzen wir eine TimeStamp/GUID
aber intern wird mit INT oder BIGINT (aber als VARCHAR(32) gespeichert) verlinkt.

Werden abhängige Tabellen Syncronisiert, muß man dann die internen und externen IDs umrechnen.

bzw. bei einigen (älteren) Tabellen, die früher nur über den INT (AUTOINC) verlinkt und syncronisiert wurden,
hatte ich die Syncro zuletzt so umgestellt, dass ein/mehrere andere Spalten als eindeutige "SyncID" genommen werden und der INT nur intern verbleibt (auf allen Datenbanken unterschiedlich).
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 15:41
aber intern wird mit INT oder BIGINT (aber als VARCHAR(32) gespeichert) verlinkt
warum macht man das denn?

je nach charset machst du aus 8 byte für bigint (und auch für indizes)
dann 34 Byte (bei single byte charsets inkl 2 längenbytes) oder bis
zu 130 Byte (UTF8)

Mag bei anderen db server anders sein, wird aber garantiert langsamer
sein unter allen Aspekten als beim native bigint zu bleiben

bzgl Thread Thema: Blobs lassen sich aus gutem Grund niemals indizieren
Ich bevorzuge bigint als pk (und weil ich faul bin heisst das feld auch
immer nur ID und fk tabellenname_id

create table master
(id bigint not null primary key,
txt varchar(80));

create table detail
(id bigint not null primary key,
master_id bigint references master(id) on delete cascade,
txt varchar(80));
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#8

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 16:10
Weil das cool ist und vor 20+x Jahren so gemacht wurde?

Nja, abgesehn von einem winzigen Fall, wo beim Dokumentimport der Datensatz noch keine ID hat (da steht dann 'DV' dort drin), welches dann aber "später" im AfterPost, bzw. Trigger zugewiesen (überschrieben) wird (könnte man bestimmt auch so umbauen, dass es früher geht, aber dafür werden Werte verwendet, die aus einem der gefühlt 2000 millionenzeiligen Before-/AfterInsterTrigger kommen, welche ja erst bekannt sind, wenn es in der Datenbank war)


Im Prinzip ist das Feld/PK an nahezu jeder Tabelle dran, mit einem globalen Generator, über alle Tabellen, also datenbank-weiter eindeutiger Key (BIGINT als String)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Jul 2022 um 16:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#9

AW: Firebird Blob Sub_type text kein primary key möglich?

  Alt 6. Jul 2022, 09:10
Texte als eindeutigen Key anzulegen ist *bäääh* ... auch wenn es möglich ist.
Das ist in dem Moment nicht mehr *bäääh*, wo man Daten serverübergreifend abgleichen soll/muss (damit meine ich keine Replikation).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 14:37 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