![]() |
MS-SQL Trigger?
Hai...
ich habe mal ne Frage die jetzt eigentlich nichts mit Delphi zu tun hat :?: Wenn ich mit meinem Programm einen neuen Datensatz in eine Tabell einfüge und der Datensatz vom Server eine ID bekommt kann ich diese ja nicht einfach wieder auslesen. Nach
Code:
Kann ich mit einem Query1.FielByName ('idfeld').AsInteger das Feld nicht auslesen.
Query1.Insert;
Query1.Post; Jetzt kann ich ja aber über einen Trigger die ID die vergeben wurde in eine andere Tabelle schreiben lassen. Aber wie komme ich an diese drann? Dafür müsste ich ja wieder ein eindeutiges Feld in der Tabelle haben. Darum die Frage: Kann ich via Trigger den Computernamen der den Eintrag in einer Tabelle gemacht hat ermitteln? |
Hai Sharky, :lol:
ich werde mich gerne mit Deiner Frage beschäftigen...nun zuerst sehe ich kein Zusammenhang zwischen deinem Problem mit ID...(vielleicht finden wir hier eine Lösung :shock: ) und der überraschenden Frage am Ende: (...) Darum die Frage: Kann ich via Trigger den Computernamen der den Eintrag in einer Tabelle gemacht hat ermitteln? (...) Gruß Paul Jr. P.S. Übrigens...ich würde gerne den Trigger (der Du benutzt) sehen... :idea: |
Hai Paul Jr. :lol:
Zitat:
eine ID geben lasse, kann ich diese nicht direckt nacht dem POST auslesen. (Zumindest geht es bei mir nicht). Jetzt wollte ich durch einen Trigger die ID in eine TMP-Tabelle schreiben
Code:
In diesem Fall geht das ja auch ohne Probleme da ich durch die Kundennummer (die vom Programm vergeben wird) die ID in der Tabelle identifizieren kann.
CREATE TRIGGER [neu_adresse] ON [Adressen]
FOR INSERT AS INSERT INTO tmp_neue_adresse (adress_id,kundennummer) SELECT adress_id,kundennummer FROM inserted Bei anderen Tabellen kann ich das leider nicht. Darum dachte ich mir das es am einfachsten wäre wenn im Trigger der Computername in eine TMP-Tabelle mit eingetragen wird. z.B.:
Code:
***** Hier sollte der Computername des Rechners stehen von dem der Eintrag in die Tabeller gemacht wurde
CREATE TRIGGER [neue_ID] ON [Adressen]
FOR INSERT AS INSERT INTO tmp_neue_ID (adress_id,*****@@computername*****) SELECT adress_id inserted |
Hi Sharky, :D
Nun zuerst empfehle ich Dir Dein Trigger zu killen, also löschen. Stattdessen solltest Du folgende Deklaration verwenden um die ID automatisch zu bestücken: z.B.:
Code:
IDENTITTY (Eigenschaft)...- MsSQL Hilfe:
CREATE TABLE [DBO].ADRESSEN
( ID INTEGER IDENTITY PRIMARY KEY NOT NULL, NAME VARCHAR(50) NULL, VORNAME VARCHAR(50) NULL ) GO (...) Erstellt eine Identitätsspalte in einer Tabelle. Diese Eigenschaft wird in den Transact-SQL-Anweisungen CREATE TABLE und ALTER TABLE verwendet. (...) So.... ______________________________________ Jetzt zeige ich Dir wie Du anhand einer (stored) Prozedur Dein Problem beseitigen kannst: [code:1:3a01902a88] CREATE PROCEDURE INSERT_ADRESSEN ( |
Hai Paul Jr.
ersteinmal Danke für deine Mühe :D ABER:
Code:
Das brauch ich nicht. Die ID Felder in meinen Tabellen sind IDENTITY Felder (habe ich wohl nicht vernünftig geschrieben.
CREATE TABLE [DBO].ADRESSEN
( ID INTEGER IDENTITY PRIMARY KEY NOT NULL, NAME VARCHAR(50) NULL, VORNAME VARCHAR(50) NULL ) GO [code:1:2b2271943e] CREATE PROCEDURE INSERT_ADRESSEN ( |
Hallo Sharky, :D
(...) ersteinmal Danke für deine Mühe (...) Hoppla... soviel Begeisterung habe ich von Dir nicht erwartet... :mrgreen: (...) Hmmmm.... Eigentlich nicht schlecht. NUR müsste ich jetzt alle Programmteile in denen Datensätze angelegt werden neu schreiben. Und das wäre tötlich. (...) nicht unbedingt!!!, da...Du kannst Deine Query weiter mit Post betreiben...mit einziger Ausnahme für neue Datensätze...(Tödlich wird für Dich wenn Du bei Deinem bisherigen Konstrukt bleibst..., da zum einem lernst Du dabei nichts... und zum anderem...bringt das auch nichts...) Du kannst in dem Ereignis BeforePost Deiner Query folgende Code schreiben... z.B.: [code:1:f00d56ef26] procedure TForm1.Query1BeforePost(DataSet: TDataSet); BEGIN |
Zitat:
Ich werde mir das ganze einmal ansehen. Aber langsam kommt bei mir die Überlegung ob ich in den nächsten Projekten bzw. den nächsten Tabellen meiner Datenbank die ID nich einfach durch Delphi erzeugen lassen. Dann lasse ich mir einfach eine GUID erzeugen. Die ist eindeutig und ich habe sie auch sofort zur Hand. Und ich bin absolut unabhängig vom verwendeten Server. Was ist denn deine Meinung dazu? |
Hi Sharky 8)
ich habe dazu keine Meinung, da ich leider nicht weißt wovon Du sprichst. Erläutere das etwas... In jedem Fall ich erzeuge meine Tabelle NUR per Scripts... Gruß Paul Jr. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 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