Zum Inhalt springen

fresh-toddo

Mitglieder
  • Gesamte Inhalte

    12
  • Benutzer seit

  • Letzter Besuch

  1. Hallo zusammen, das Problem ist gelöst! Habe den Trigger auf der falschen Tabelle ausgeführt. Der Datensatz hat noch nicht existiert. Habe ihn jetzt für die Tabelle ContactExtensionBase angelegt und schon funktioniert alles. Danke euch allen für eure Hilfe! Schönes Wochenende Gruß fresh-toddo
  2. hallo, hier mal mein abgeänderter trigger...funktioniert leider immer noch nicht! bitte um vorschläge wo es haken könnte... -- neuen Trigger anlegen CREATE TRIGGER trigg_kontID_anlegen -- Trigger ist verbunden mit folgender Tabelle ON ContactBase -- Trigger wird fuer jeden Insert Befehl auf der Tabelle ausgeführt FOR INSERT -- jede Codezeile die nach dem AS Befehl steht wird beim starten des Triggers ausgeführt AS -- Variablen Deklaration DECLARE @highestId int --DECLARE @accIdInserted NVARCHAR(255) DECLARE @idNew int -- ######################################################################################## -- höchste ID auslesen SELECT @highestId = (SELECT MAX(New_contactid) FROM ContactExtensionBase) PRINT 'Hoechste Zahl:' PRINT @highestId -- 1 addieren SELECT @idNew = @highestId +1 PRINT @idNew -- ######################################################################################## Update ContactExtensionBase SET New_contactid = @idNew WHERE ContactId = (SELECT ContactId FROM Inserted) --Update ContactExtensionBase SET New_contactid = @idNew WHERE ContactId = ('DC4FE843-A41F-DF11-92A7-005056C00008') ---> FUNKTIONIERT --Update ContactExtensionBase SET New_contactid = @idNew WHERE ContactId = ('{24765A21-831C-DF11-81CD-005056C00008}') ---> FUNKTIONIERT bin für jeden tipp dankbar! gibt es vielleicht ne möglichkeit das ganze anders zu lösen? ohne trigger? gruß
  3. den trigger hab ich ja bereits gepostet oder was meinst du genau? Create Table liefer ich noch nach... @dr.dimitri: das das nicht die ideallösung ist da bin ich auch schon drauf hingewiesen worden aber bin nicht so der programmierer weiß net wie ich es sonst machen soll...haste ne eine andere idee? ich nutze das nicht um verknüpfungen herzustellen...die verknüpfung ist bereits vorhanden ich möchte nur für den Datensatz eine weitere eindeutige Zahl generieren...bräuchte die where klausel aber auch in einem anderen trigger in dem ich lediglich den primärschlüssel in ein neues feld kopieren möchte
  4. hat keiner ne idee woran es liegen könnte?:confused:
  5. sorry wenn es etwas verwirrend ist...versuche mal klarheit zu verschaffen ich habe 2 tabellen: contact und contactExtension contact: - ContactId (Uniqueidentifier) - ...rest aus der Tabelle ist unwichtig... contactExtention: - ContactId (NVARCHAR) wird automatisch angelgt bei neuem Eintrag in die contact tabelle - New_contactid (int) von mir angelegtes Attribut in das ich bei jedem insert auf die tabelle contact einen Wert reinschreiben will --> mit dem trigger der nicht funktioniert habe das jetzt versucht so zu lösen das ich bei einem insert befehl auf die contact tabelle mir die ContactId aus dem "Inserted" raus hole die in eine variable schreibe (typ: uniqueidentifier) und diese dann in eine neue vom typ NVARCHAR caste (kann ich den wert auch direkt in die NVARCHAR variable schreiben?) und mit hilfe dieser variablen den datensatz in der tabelle contactExtension auswähle (WHERE) in dem der wer New_contactid aktualisiert werden soll...klingt vielleicht verwierend aber is die einzige möglichkeit gruß
  6. so habe den trigger zu testzwecken nochmal leicht geändert ich hole mir die id die ich für die Where-Abfrage in meinem Update Statement verwende nicht mehr aus dem Insert-Datensatz sondern lese mir via SELECT einen beliebigen Datensatz aus und schreibe die ID in die Variable! zu meinem verwundern funktioniert dann alles so wie es soll...das heißt die mit 1 addierte zahl wird in das gewünschte feld in der DB geschrieben! jetzt verstehe ich umsoweniger warum mein trigger nicht so funzt wie er soll?? der wert in der variable ist doch derselbe ob ich ihn jetzt aus dem Insert-datensatz oder aus einem select befehl auslese ist doch egal?? oder hab ich irgendwo ein denkfehler? Hier mein angepasster trigger: CREATE TRIGGER trigg_kontID_anlegen ON ContactBase FOR INSERT AS DECLARE @highestId int DECLARE @id uniqueidentifier DECLARE @conIdInserted NVARCHAR(40) DECLARE @idNew int -- höchste ID auslesen SELECT @highestId = (SELECT MAX(New_contactid) FROM ContactExtensionBase) PRINT 'Hoechste Zahl:' PRINT @highestId -- 1 addieren SELECT @idNew = @highestId +1 PRINT @idNew SELECT @id = (SELECT ContactId FROM ContactBase WHERE LastName = 'Test_mi_0224_02') PRINT @id SET @conIdInserted = (SELECT CAST (@id AS NVARCHAR(40))) PRINT @conIdInserted Update ContactExtensionBase SET New_contactid = @idNew WHERE ContactId = @id bin für tipps und anregungen dankbar gruß fresh-toddo
  7. SELECT @conIdInserted = (SELECT CAST (ContactId AS NVARCHAR(40)) FROM Inserted) ok...so nimmt er den befehl...aber leider immer noch nicht mit dem gewünschten erfolg...bekomme immer noch keine werte in die db
  8. das war nur ein versuch...das habe ich bereits rückgängig gemacht hab jetzt versucht die id auszulesen und direkt in nvarchar umzuwandeln die syntax müsste denk ich soweit richtig sein... SELECT @conIdInserted = (SELECT CAST (ContactId AS NVARCHAR) FROM Inserted) wenn ich das ganze aber mit dem sql analyzer prüfe bekomme ich einen feher: Arythmetischer Überlauffehler beim Konvetieren von Expression in den Datentyp nvarchar. Haste ne ahnung woran das liegt? oder kann ich das konvertieren auf diesem weg nicht durchführen? die variable @conIdInserted habe ich zuvor als NVARCHAR(40) deklariert... gruß
  9. hallo, erstmal danke für deine antwort! dachte eigentlich auch es müsste funktionieren...also der trigger tut nichts oder zumindest nicht das was er soll! also der wurm hängt in dem WHERE statement...nur warum oder woran genau da bin ich noch nicht dahinter gestiegen...könnte es ein problem mit dem datentyp sein?? die ID die ich in die variable @accIdInserted auslese und in der Where Abfrage verwende hat in der DB den Datentyp Uniqueidentifier...der Datentyp der Variablen ist aber NVARCHAR könnte das es problem sein? in der Tabelle auf die ich den Update Befehl inkl. Where Abfrage ausführe hat diese Id auch den Datentyp NVARCHAR...von welchem Datentyp sollte jetzt meine Variable sein?? haste ne idee oder ein tipp für mich? gruß fresh-toddo
  10. ist sqlplus nicht für oracle? ich habe jetzt in dem trigger mal mit @@error die Fehler ausgeben lassen...Ergebnis= 0 zur Info vielleicht noch...die Werte in der WHERE Klausel haben folgende Form: {CAA20779-C764-DB11-807E-005056C00026} Wäre super wenn noch jemand den ein oder anderen Tipp für mich hat...
  11. sollte er eigentlich ich weiß aber nicht genau wo ich da nachsehen kann...die Dateneingabe erfolgt über eine Maske aus dem MS CRM! gibt es im SQL Server irgendwo ein Fehlerlog oder ähnliches?
  12. Hallo zusammen, bin neu hier und hab gleich mal ne Frage oder besser gesagt ein Problem! Wäre super wenn mir jemand helfen könnte... Ich habe einen Datenbanktrigger für eine Tabelle auf einem MS SQL Server geschrieben. Dieser Trigger soll bei einem Insert Befehl auf eine bestimmt Tabelle ein Feld in einer anderen Tabelle mit einem Wert aktualisieren. Hier mal mein Code: CREATE TRIGGER trigg_kontID_anlegen ON <Datenbank> FOR INSERT AS DECLARE @highestId int DECLARE @accIdInserted VARCHAR(255) DECLARE @idNew int SELECT @highestId = (SELECT MAX(New_contactid) FROM ContactExtensionBase) PRINT @highestId SELECT @accIdInserted = (SELECT ContactId FROM Inserted) PRINT @accIdInserted SELECT @accIdInserted = '{'+@accIdInserted +'}' PRINT @accIdInserted SELECT @idNew = @highestId +1 PRINT @idNew Update ContactExtensionBase SET New_contactid = @idNew WHERE ContactId = (@accIdInserted) Habe über den QueryAnalyzer die Werte geprüft...das lesen des höchsten Wertes klappt, das ermitteln der AccountId und schreiben in die entsprechende Variable klappt etc....aber er schreibt den Wert nicht in die Tabelle! Ersetze ich aber in der WHERE Klausel die Variable durch einen fixen Wert in der Form wie er auch in der DB vorkommt dann klappt es...hat jemand ne Idee woran das liegen könnte? Wäre super weiß langsam net mehr weiter... Hoffe ist einigermaßen verständlich geschildert das Problem schon mal danke im Voraus fresh-toddo

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...