php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 17-11-2008, 16:12
JSkrok
 Registrierter Benutzer
Links : Onlinestatus : JSkrok ist offline
Registriert seit: Feb 2003
Ort: Essen
Beiträge: 262
JSkrok ist zur Zeit noch ein unbeschriebenes Blatt
Standard MSSQL Trigger Problem ...

nabend,

wieder einmal der verflixte Montag, neben dem Freitag einer der Tage an denen nie etwas klappt *g*

Ich hab hier nen Trigger geschrieben, der Feldwertändeurngen mitschreiben soll.

Hier der Code:

PHP-Code:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

ALTER trigger 
[dbo].[tblAS0003_ChangeTracking_3on [dbo].[tblAS0003] for update
AS

-- print 
'Trigger feuert!'
-- Allgemeine Deklarationen für den Trigger  
declare @bit int ,
@
field int ,
@
maxfield int ,
@
char int ,
@
fieldname varchar(128) ,
@
TableName varchar(128) ,
@
sql varchar(2000),
@
sqlcl varchar(2000),
@
UpdateDate varchar(21) ,
@
UserName varchar(128) ,
@
Type char(1) ,
@
PKValueSelect varchar(1000),
@
cnt_i varchar(128),
@
cnt_t varchar(128)

select @TableName 'tblAS0003'

-- Datum und Benutzer
select 
@UserName system_user ,  @UpdateDate convert(varchar(8), getdate(), 112) + ' ' convert(varchar(12), getdate(), 114)


-- 
Trigger-Action
if exists (select from inserted)
if 
exists (select from deleted)
select @Type 'U'
else
select @Type 'I'
else
select @Type 'D'

-- Hole Spalten-Liste
select id
idusermodifycitycommemail1commemail2commemail3commfaxofficecomminternetcommphonecentral,
       
"function"
       
shortnamedepartment
       
name1name2name3namefirstnamelastnamesalutationnametitlenumber,
       
streetzipcodeb_funktion_beziehungenb_gesellschaftsanteil,
       
buergelidbuergelstatuscrm_funktion_jfmcrm_funktion_jfpfamilienstandkundenstatus,
       
l_adresstypl_branche1l_branche2l_branche3l_bundeslandl_fuhrparkl_kapital,
       
l_mitarbeiterl_rechtsforml_sperrkennzl_umsatzland_privatnewsletterort_privat,
       
plz_privatstraße_privat
  into 
#ins from inserted
select ididusermodifycitycommemail1commemail2commemail3commfaxofficecomminternetcommphonecentral,
       
"function"
       
shortnamedepartment,
       
name1name2name3namefirstnamelastnamesalutationnametitlenumber,
       
streetzipcodeb_funktion_beziehungenb_gesellschaftsanteil,
       
buergelidbuergelstatuscrm_funktion_jfmcrm_funktion_jfpfamilienstandkundenstatus,
       
l_adresstypl_branche1l_branche2l_branche3l_bundeslandl_fuhrparkl_kapital,
       
l_mitarbeiterl_rechtsforml_sperrkennzl_umsatzland_privatnewsletterort_privat,
       
plz_privatstraße_privat
  into 
#del from deleted

-- Änderungen ermitteln und Log-Eintrag vornehmen
select 
@PKValueSelect Id from inserted

select 
@field 0, @maxfield max(ORDINAL_POSITIONfrom INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName

while @field < @maxfield
begin
  select 
@field min(ORDINAL_POSITIONfrom INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName and ORDINAL_POSITION > @field
  select 
@bit = (@field )% 1
  select 
@bit power(2,@bit 1)
  
select @char = ((@field 1) / 8) + 1


  
if substring(COLUMNS_UPDATED(),@char1) &@bit or @Type in ('I','D')
  
  
begin
print 'Jetzt'
    
select @fieldname COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName and ORDINAL_POSITION = @field
    
print 'Feldname: ' + @fieldname
    select 
@sql 'insert into tblAS0003_EX0013 (IdAddress, IdUserCreate, TimeCreate, AenderungVon, AenderungAm, Feld, oldvalue, newvalue) '
    
select @sql = @sql 'select i.Id, i.IdUserModify, '
    
select @sql = @sql '''' + @UpdateDate ''', '
    
select @sql = @sql ' i.IdUserModify, '
    
select @sql = @sql '''' + @UpdateDate ''', '
    
select @sql = @sql '''' + @fieldname ''', '
    
select @sql = @sql 'convert(char(1000),d.' + @fieldname +'),'
    
select @sql = @sql 'convert(char(1000),i.' + @fieldname +') '
    
select @sql = @sql ' from #ins i join #del d '
    
select @sql = @sql 'on i.Id = d.Id'
    
select @sql = @sql ' where i.' + @fieldname ' <> d.' + @fieldname
    select 
@sql = @sql '    or i.' + @fieldname ' is null'
    
select @sql = @sql '    or d.' + @fieldname ' is null'
    
print @sql
    exec 
(@sql)

    --
raiserror (@sql,16,-1,@TableName)
  
end
end 

Egal was ich mache ich bekomm nen Error:

Code:
Microsoft OLE DB Provider for SQL Server: Falsche Syntax in der nähe des 'Function'-Schlüsselwortes. [42000]=156
Mein Kopf raucht und ich habe keine Idee mehr ....


P.S.: Es liegt nicht an dem "Feld" "Function".
Mit Zitat antworten
  #2 (permalink)  
Alt 17-11-2008, 16:16
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Gänsefüsschen hat in Transact-SQL nichts verloren
Mit Zitat antworten
  #3 (permalink)  
Alt 17-11-2008, 16:26
JSkrok
 Registrierter Benutzer
Links : Onlinestatus : JSkrok ist offline
Registriert seit: Feb 2003
Ort: Essen
Beiträge: 262
JSkrok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

grmls,

Ich kann den Feldnamen "Function" aber nicht anders ansprechen, auch mit kompletten Tabellendaten gehts nicht

Oder ich steh heute auf dem Schlauch?

keine Ahnung....
Mit Zitat antworten
  #4 (permalink)  
Alt 17-11-2008, 16:59
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Es gäbe da noch das einfache Hochkomma ' und Backtick `. Schon versucht?

Oder du benennst deine Spalte nicht wie ein reserviertes Wort. Das ist doch der Grund für dein Problem oder?
Mit Zitat antworten
  #5 (permalink)  
Alt 17-11-2008, 19:30
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von JSkrok
grmls,

Ich kann den Feldnamen "Function" aber nicht anders ansprechen, auch mit kompletten Tabellendaten gehts nicht

Oder ich steh heute auf dem Schlauch?

keine Ahnung....
Tja, wenn du unbedingt reservierte Wörte nehmen muss, was kein vernünftige EntwicklerInnen tun, dann solltest du zu mindest wissen, wie man sie escapen.

Du hast hier: [dbo].[tblAS0003] schon gemacht, warum auch nicht bei dem Wort? Vielleicht siehst du jetzt ein, dass man mit Copy & Paste doch nicht sehr weit kommt
Mit Zitat antworten
  #6 (permalink)  
Alt 17-11-2008, 19:31
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von onemorenerd
Es gäbe da noch das einfache Hochkomma ' und Backtick `. Schon versucht?

Oder du benennst deine Spalte nicht wie ein reserviertes Wort. Das ist doch der Grund für dein Problem oder?
Hochkomma umschliesst Stringliteral ... und Backstick ` ist für MS-SQL ein Character wie a, b, c ...
Mit Zitat antworten
  #7 (permalink)  
Alt 17-11-2008, 20:01
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wieder was gelernt. Hab mit MSSQL nix am Hut, aber trotzdem gut zu wissen.
Mit Zitat antworten
  #8 (permalink)  
Alt 17-11-2008, 22:15
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:
Obwohl das eckige Klammernpaar als Escape-Operator ja schon recht merkwürdig anmutet...
Mit Zitat antworten
  #9 (permalink)  
Alt 18-11-2008, 09:24
JSkrok
 Registrierter Benutzer
Links : Onlinestatus : JSkrok ist offline
Registriert seit: Feb 2003
Ort: Essen
Beiträge: 262
JSkrok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von asp2php
Tja, wenn du unbedingt reservierte Wörte nehmen muss, was kein vernünftige EntwicklerInnen tun, dann solltest du zu mindest wissen, wie man sie escapen.

Du hast hier: [dbo].[tblAS0003] schon gemacht, warum auch nicht bei dem Wort? Vielleicht siehst du jetzt ein, dass man mit Copy & Paste doch nicht sehr weit kommt

Das soll jetzt nicht beleidigend klingen ... Ich arbeite mit ner Datenbankstruktur eines großen Softwareproduzenten von CRM-Systemen. Hierfür wurden Erweiterungen von einem unserer Kunden gewünscht. Wie ich oben schon geschrieben habe kann ich mal gar nichts für die Feldbezeichnungen innerhalb der Tabellen, mit denen muss ich einfach leben.

[dbo].[tblAS0003].[Funktion] war natürlich mein erster Einfall mit der Meldung 4104 ... also bitte nicht immer gleich maulen wenn es so aussieht als würde der Herr nur irgendwo irgendetwas herkopiert haben ....


Ich habe lediglich eine Frage zu einem Problem gestellt, dass mir im Moment nicht in den Sinn kommen möchte. Dafür habe ich um Hilfe gebeten, dass ihr nun meint ich würde mit copy&paste durchs Leben ziehen, will mir einfach nicht in den Kopf.
Mit Zitat antworten
  #10 (permalink)  
Alt 18-11-2008, 09:27
JSkrok
 Registrierter Benutzer
Links : Onlinestatus : JSkrok ist offline
Registriert seit: Feb 2003
Ort: Essen
Beiträge: 262
JSkrok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von asp2php
Tja, wenn du unbedingt reservierte Wörte nehmen muss, was kein vernünftige EntwicklerInnen tun, dann solltest du zu mindest wissen, wie man sie escapen.

Du hast hier: [dbo].[tblAS0003] schon gemacht, warum auch nicht bei dem Wort? Vielleicht siehst du jetzt ein, dass man mit Copy & Paste doch nicht sehr weit kommt
War übrigens so gemeint, dass ich es mit der kompletten Tabellenbezeichnung schon probiert habe:

[dbo].[tblAS0002].[Feldname]
Mit Zitat antworten
  #11 (permalink)  
Alt 18-11-2008, 09:29
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Ich habe lediglich eine Frage zu einem Problem gestellt, dass mir im Moment nicht in den Sinn kommen möchte. Dafür habe ich um Hilfe gebeten, dass ihr nun meint ich würde mit copy&paste durchs Leben ziehen, will mir einfach nicht in den Kopf.
So machen es leider eine ganze Menge Leute, darum hat asp2php so reagiert. Wenn dem nicht so ist, hast du dir ja nichts vor zu werfen
Mit Zitat antworten
  #12 (permalink)  
Alt 18-11-2008, 09:31
JSkrok
 Registrierter Benutzer
Links : Onlinestatus : JSkrok ist offline
Registriert seit: Feb 2003
Ort: Essen
Beiträge: 262
JSkrok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich find MSSQL eh kacke und ich glaube ich habe im Februar schonmal gesagt das ich damit nix mehr zu tun haben will :P
Mit Zitat antworten
  #13 (permalink)  
Alt 18-11-2008, 09:39
JSkrok
 Registrierter Benutzer
Links : Onlinestatus : JSkrok ist offline
Registriert seit: Feb 2003
Ort: Essen
Beiträge: 262
JSkrok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So und damit ihr nun auch die Lösung habt,

natürlich hole ich mir die Felder aus ner anderen Tabelle ... sollte ich vieleicht gleich drauf achten *g*

[deleted]
[inserted] sind bei Mssql die welche ich ansprechen will. Viel Wind für nichts, ich war wohl einfach übermüdet ...
Mit Zitat antworten
  #14 (permalink)  
Alt 18-11-2008, 13:32
JSkrok
 Registrierter Benutzer
Links : Onlinestatus : JSkrok ist offline
Registriert seit: Feb 2003
Ort: Essen
Beiträge: 262
JSkrok ist zur Zeit noch ein unbeschriebenes Blatt
Standard

*grml*

Ich hab da dennoch mal ne Frage (nein ich arbeite nicht täglich mit der MSSQL). Gibt es ne Möglichkeit aktuelle Querys die auf der DB ausgeführt werden zu sehen?

Bsp:
Ein Programm arbeitet auf ner DB aufm SQLServer und schickt ständig irgendwelche Querys :P nun müsst ich mal wissen WAS genau das Programm dort abfragt.

Gruß
Jan
Mit Zitat antworten
  #15 (permalink)  
Alt 18-11-2008, 13:37
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dafür ist der Profiler da. Damit kannst du jede Aktion protokollieren, bis ins kleinste Details. Geh bitte vorsichtig damit um, denn du kannst mit dem Profiler den Server ganz schnell die Performance berauben, wenn du übertreibst.

btw: es lag nicht am inserted oder deleted, erzählt mir bitte kein Märchen. Es lag an "function" und das sieht man an der Fehlermeldung!

Geändert von asp2php (18-11-2008 um 13:40 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:03 Uhr.