Ich habe mich gefragt, ob es möglich ist, einen Trigger nur für meine aktuelle Anwendung und nicht für SQL zu aktivieren, das für die Tabelle ausgeführt wird.
Die Situation:
Es gibt zwei Anwendungen, die an derselben Datenbank arbeiten. App1 und App2.
Ich habe einen Auslöser für 'MyTable', der nur ausgelöst werden sollte, wenn App1 eine Abfrage ausführt, aber nicht, wenn App2 dies tut.
sql-server
sql-server-2008-r2
Patric
quelle
quelle
APP_NAME()
können Sie auch verwendenSET CONTEXT_INFO
.SET CONTEXT_INFO
wird häufig verwendet, um Informationen an solche Trigger zu senden.Antworten:
Es ist zwar kein gutes Design, aber machbar. Sie müssen Logik in den Trigger einfügen, damit der Code nur ausgeführt wird, wenn die richtige Anwendung verbunden ist.
quelle
app_name()
es sehr einfach ist, über Eigenschaften von Verbindungszeichenfolgen zu fälschen.