Jag skulle vilja att ett script eller en applikation kontrollerar och korrigeradatat som skall sättas in i en databas tabell! Det hade jag undvikit Patrik... Hmm, intressant det där med triggers beteende, jag har inte hört om detta förut alls. Har du någon källa till detta påstående...? Jag vill bara ha en försäkran om att det stämmer .. :) Har du anropat externa script eller appliaktioner ifån dina Triggers någon gång? Jag har inga direkta länkar i huvdet, Hej hej. Inte att rekommendera, men finns det något alternativ? Jag har testat lite och förökt köra följande trigger:Köra applikation eller script ifrån en Trigger
Går det att göra det i en Trigger?
och i så fall hur?
Jag använder SQL server 2000..
Sv: Köra applikation eller script ifrån en Trigger
tänk på att allt som händer i en trigger stoppar upp skapandet eller uppdateringen i databasen tills triggern är klar.Sv: Köra applikation eller script ifrån en Trigger
Om det stämmer, måste det väl gå att påverka på något sätt genom LOCK statements?
Å andra sidan går det väl inte på något annat sätt än genom just en trigger - om man inte har full kontroll över de system/applikationer som använder databasens tabeller..
Jag har använt triggers en del och inte märkt något problem med det.
OlaSv: Köra applikation eller script ifrån en Trigger
Sv: Köra applikation eller script ifrån en Trigger
men triggers körs i samma (implicita) transaktion, därför lyckas bara Update/Insert/Delete om triggern lyckas och följdaktligen så behöver vi vänta på att triggern är färdig innan databasen kan ropa på Commit och returnera resultatet.
Jag kan luska lite, det här borde stå i books online men personligen har jag lärt mig det av Tibor Karaszi MVP och MCT på Sql Server här på Cornerstone (eller han har precis startat eget)Sv: Köra applikation eller script ifrån en Trigger
Det fungerar precis som Patrik säger, och därför bör man se upp med vad man kör i triggers.
Om du absolut behöver köra något så kan du bygga en egen extended stored procedure, eller använda dig av kommandoradsprogram via xp_cmdshell.
Exempel
<code>
create table test (i int)
create trigger tr_test on test for insert
AS
exec master..xp_cmdshell 'dir c:\'
</code>
<code>
insert test select 5
</code>
Detta är inte att rekommendera...Sv: Köra applikation eller script ifrån en Trigger
Jag behöver kontrollera inkommande data i databasen med ett externt script eller applikation, jag har ej tillgång till de processer som skriver in datat i databasen från början!
Som jag fattade det kan jag köra kommandradsprogram t.ex:
exec master..sc_cdmshell 'java mittprogram.class - argument" ??
Men hur får jag tillbaka det data som mittprogam retunerar (t.e.x via println ) ??
Är det möjligt att även anropa t.ex. asp script eller måste mittprogram isf göra det?Sv: Köra applikation eller script ifrån en Trigger
<code>
CREATE TRIGGER [test] ON dbo.TABELL1 FOR INSERT AS
BEGIN
DECLARE @nummerint
select @nummer= NUMBER from inserted
update PERSON set LASTNAME = 'Farbror Anka' where NUMBER = @nummer
exec master..xp_cmdshell 'echo HEJALLA > E:\hejsan.txt'
END
</code>
Updateringen av LASTNAME fungerar men cmd commandot utförs ej!
dvs "HEJALLA" skrics ej i hejsan.txt!
Vad kan detta detta på?