Hallo!
Bin zwar kein Spezialist, aber vielleicht kann ich ein wenig Licht ins Dunkle bringen:
Hier ein praktisches Beispiel (Auszugsweise):
Die Tabelle:
Code:
CREATE GENERATOR ID;
CREATE TABLE IPCAM (
ID BIGINT NOT NULL,
IDCAM BIGINT NOT NULL,
ANGELEGT DATUMUHRZEIT DEFAULT current_timestamp /* DATUMUHRZEIT = TIMESTAMP */ NOT NULL /* DATUMUHRZEIT = TIMESTAMP */,
BILD BLOB SUB_TYPE 0 SEGMENT SIZE 16384
);
/******************************************************************************/
/* Primary Keys */
/******************************************************************************/
ALTER TABLE IPCAM ADD CONSTRAINT PK_IPCAM PRIMARY KEY (ID);
/******************************************************************************/
/* Foreign Keys */
/******************************************************************************/
ALTER TABLE IPCAM ADD CONSTRAINT FK_IPCAM_1 FOREIGN KEY (IDCAM) REFERENCES CAMTYP (ID);
/******************************************************************************/
/* Indices */
/******************************************************************************/
CREATE INDEX IPCAM_IDX1 ON IPCAM (ANGELEGT);
/******************************************************************************/
/* Triggers */
/******************************************************************************/
SET TERM ^ ;
/******************************************************************************/
/* Triggers for tables */
/******************************************************************************/
/* Trigger: IPCAM_BIU0 */
CREATE OR ALTER TRIGGER IPCAM_BIU0 FOR IPCAM
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
if (new.id is null) then
new.id = gen_id(id, 1);
if (new.angelegt is null) then
new.angelegt = current_timestamp;
end
^
SET TERM ; ^
Hier der Generator:
Code:
CREATE SEQUENCE ID;
ALTER SEQUENCE ID RESTART WITH 619995;
Nun der Codeauszug, um Daten einzutragen bzw. ein Update auszuführen:
Delphi-Quellcode:
procedure Tccamera.Speichercamtyp;
var
Sql:
string;
begin
try
if CamTypName = '
'
then
begin
ShowMessage('
Kein Kameratyp angegeben!');
exit;
end;
if CamTypID <= 0
then
begin
sql := '
insert into ' + Ftabtyp + '
(camname,adresse) values(:camname,:adresse);';
dm.tTypen.StartTransaction;
dm.qTypen.SQL.Text :=
sql;
dm.qTypen.Params.ByNameAsString['
camname'] := UTF8Decode(CamTypName);
dm.qTypen.Params.ByNameAsString['
adresse'] := UTF8Decode(CamTypAdresse);
end
else
begin
sql := '
update ' + Ftabtyp +
'
set camname=:camname, adresse=:adresse where id=:id;';
dm.tTypen.StartTransaction;
dm.qTypen.SQL.Text :=
sql;
dm.qTypen.Params.ByNameAsString['
camname'] := UTF8Decode(CamTypName);
dm.qTypen.Params.ByNameAsString['
adresse'] := UTF8Decode(CamTypAdresse);
dm.qTypen.Params.ByNameAsInt64['
id'] := CamTypID;
end;
dm.qTypen.Execute;
dm.tTypen.Commit;
except
on E:
Exception do
begin
dm.tTypen.RollBack;
ShowMessage(E.
Message);
end;
end;
end;