Je dois vérifier au lancement d'une procédure si une table X existe.
Si elle n'existe pas la créér et ensuite ajouter un trigger T.
Je crée ma table et ensuite mon trigger.
La première fois que je fais la vérification, il n'y a pas de problème mais
à la deuxième j'ai une erreur car mon trigger existe déjà.
Est-il possible de mettre tout le code de création dans la même requête &
Je vérifie si la table existe. si elle n'existe pas je la crée et du même
coup je pourrais créer le trigger
Au deuxième passage comme ma table existe déjà , la procédure ne tenterait
pas de créer une
nouvelle fois le trigger et je n'aurai plus de message d'erreur.
Peut-être est-il possible de vérifier si trigger existe comme pour la table
mais je ne connais
pas la syntaxe pour le faire
Merci
Jacques
Voici ma procédure
'Je créé la table
Dim sqlCreer_Arch As String = "USE project_371 " & _
" IF NOT EXISTS ( SELECT * FROM project_371 " & _
" .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _
" CREATE TABLE [dbo].[Response_Arch]( " & _
"[RpsRespondent] [varchar](10) NOT NULL, " & _
"[RpsQuestion] [nvarchar](10) NOT NULL, " & _
"[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsContent] [nvarchar](100) NULL, " & _
"[RpsOpened] [ntext] NULL, " & _
"[RpsType] [int] NOT NULL, " & _
"[projectId] [int] NULL, " & _
"[collectMode] [int] NULL, " & _
"[modifiedBy] [int] NULL, " & _
"[modified] [datetime] NULL," & _
"[DTIN] [datetime] NULL)"
'Je crée le trigger
Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
Si vous êtes en 2000, testez l'existence du trigger par : IF EXISTS (SELECT * FROM MaBase.dbo.sysobjects WHERE xtype = 'TR' AND name = '???')
En 2005 faites le à travers la vue sys.triggers
A +
Jacques (BE) a écrit :
Bonjour tout le monde,
Je dois vérifier au lancement d'une procédure si une table X existe. Si elle n'existe pas la créér et ensuite ajouter un trigger T.
Je crée ma table et ensuite mon trigger.
La première fois que je fais la vérification, il n'y a pas de problème mais à la deuxième j'ai une erreur car mon trigger existe déjà.
Est-il possible de mettre tout le code de création dans la même requête & Je vérifie si la table existe. si elle n'existe pas je la crée et du même coup je pourrais créer le trigger Au deuxième passage comme ma table existe déjà , la procédure ne tenterait pas de créer une nouvelle fois le trigger et je n'aurai plus de message d'erreur.
Peut-être est-il possible de vérifier si trigger existe comme pour la table mais je ne connais pas la syntaxe pour le faire
Merci
Jacques
Voici ma procédure
'Je créé la table Dim sqlCreer_Arch As String = "USE project_371 " & _
" IF NOT EXISTS ( SELECT * FROM project_371 " & _
" .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _
" CREATE TABLE [dbo].[Response_Arch]( " & _
"[RpsRespondent] [varchar](10) NOT NULL, " & _
"[RpsQuestion] [nvarchar](10) NOT NULL, " & _
"[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsContent] [nvarchar](100) NULL, " & _
"[RpsOpened] [ntext] NULL, " & _
"[RpsType] [int] NOT NULL, " & _
"[projectId] [int] NULL, " & _
"[collectMode] [int] NULL, " & _
"[modifiedBy] [int] NULL, " & _
"[modified] [datetime] NULL," & _
"[DTIN] [datetime] NULL)"
'Je crée le trigger
Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _
" ON [dbo].[Response_Arch]" & _
" AFTER INSERT,UPDATE" & _
" AS " & _
" BEGIN" & _
" SET NOCOUNT ON;" & _
" UPDATE Response_Arch SET DTIN = GETDATE()" & _
" END"
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
Si vous êtes en 2000, testez l'existence du trigger par :
IF EXISTS (SELECT *
FROM MaBase.dbo.sysobjects
WHERE xtype = 'TR'
AND name = '???')
En 2005 faites le à travers la vue sys.triggers
A +
Jacques (BE) a écrit :
Bonjour tout le monde,
Je dois vérifier au lancement d'une procédure si une table X existe.
Si elle n'existe pas la créér et ensuite ajouter un trigger T.
Je crée ma table et ensuite mon trigger.
La première fois que je fais la vérification, il n'y a pas de problème mais
à la deuxième j'ai une erreur car mon trigger existe déjà.
Est-il possible de mettre tout le code de création dans la même requête &
Je vérifie si la table existe. si elle n'existe pas je la crée et du même
coup je pourrais créer le trigger
Au deuxième passage comme ma table existe déjà , la procédure ne tenterait
pas de créer une
nouvelle fois le trigger et je n'aurai plus de message d'erreur.
Peut-être est-il possible de vérifier si trigger existe comme pour la table
mais je ne connais
pas la syntaxe pour le faire
Merci
Jacques
Voici ma procédure
'Je créé la table
Dim sqlCreer_Arch As String = "USE project_371 " & _
" IF NOT EXISTS ( SELECT * FROM project_371 " & _
" .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _
" CREATE TABLE [dbo].[Response_Arch]( " & _
"[RpsRespondent] [varchar](10) NOT NULL, " & _
"[RpsQuestion] [nvarchar](10) NOT NULL, " & _
"[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsContent] [nvarchar](100) NULL, " & _
"[RpsOpened] [ntext] NULL, " & _
"[RpsType] [int] NOT NULL, " & _
"[projectId] [int] NULL, " & _
"[collectMode] [int] NULL, " & _
"[modifiedBy] [int] NULL, " & _
"[modified] [datetime] NULL," & _
"[DTIN] [datetime] NULL)"
'Je crée le trigger
Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _
" ON [dbo].[Response_Arch]" & _
" AFTER INSERT,UPDATE" & _
" AS " & _
" BEGIN" & _
" SET NOCOUNT ON;" & _
" UPDATE Response_Arch SET DTIN = GETDATE()" & _
" END"
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Si vous êtes en 2000, testez l'existence du trigger par : IF EXISTS (SELECT * FROM MaBase.dbo.sysobjects WHERE xtype = 'TR' AND name = '???')
En 2005 faites le à travers la vue sys.triggers
A +
Jacques (BE) a écrit :
Bonjour tout le monde,
Je dois vérifier au lancement d'une procédure si une table X existe. Si elle n'existe pas la créér et ensuite ajouter un trigger T.
Je crée ma table et ensuite mon trigger.
La première fois que je fais la vérification, il n'y a pas de problème mais à la deuxième j'ai une erreur car mon trigger existe déjà.
Est-il possible de mettre tout le code de création dans la même requête & Je vérifie si la table existe. si elle n'existe pas je la crée et du même coup je pourrais créer le trigger Au deuxième passage comme ma table existe déjà , la procédure ne tenterait pas de créer une nouvelle fois le trigger et je n'aurai plus de message d'erreur.
Peut-être est-il possible de vérifier si trigger existe comme pour la table mais je ne connais pas la syntaxe pour le faire
Merci
Jacques
Voici ma procédure
'Je créé la table Dim sqlCreer_Arch As String = "USE project_371 " & _
" IF NOT EXISTS ( SELECT * FROM project_371 " & _
" .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _
" CREATE TABLE [dbo].[Response_Arch]( " & _
"[RpsRespondent] [varchar](10) NOT NULL, " & _
"[RpsQuestion] [nvarchar](10) NOT NULL, " & _
"[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsContent] [nvarchar](100) NULL, " & _
"[RpsOpened] [ntext] NULL, " & _
"[RpsType] [int] NOT NULL, " & _
"[projectId] [int] NULL, " & _
"[collectMode] [int] NULL, " & _
"[modifiedBy] [int] NULL, " & _
"[modified] [datetime] NULL," & _
"[DTIN] [datetime] NULL)"
'Je crée le trigger
Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _
" ON [dbo].[Response_Arch]" & _
" AFTER INSERT,UPDATE" & _
" AS " & _
" BEGIN" & _
" SET NOCOUNT ON;" & _
" UPDATE Response_Arch SET DTIN = GETDATE()" & _
" END"
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
Jacques \(BE\)
Bonjour (et merci),
Voici le code utilisé directement dans SQL SERVER :
IF EXISTS (SELECT * FROM .dbo.sysobjects WHERE xtype = 'TR' AND name = 'MAJDATE') CREATE TRIGGER dbo.MAJDATE ON dbo.Response_Arch AFTER INSERT,UPDATE AS BEGIN SET NOCOUNT ON; UPDATE Response_Arch SET DTIN = GETDATE() END
Message d'erreur :
Msg 156, Level 15, State 1, Line 5 Incorrect syntax near the keyword 'TRIGGER'.
Comment résoudre ce problème ?? Je ne suis que débutant dans SQL Server ...:-(
Merci
"Fred BROUARD" a écrit dans le message de news:uwgmk$
Si vous êtes en 2000, testez l'existence du trigger par : IF EXISTS (SELECT * FROM MaBase.dbo.sysobjects WHERE xtype = 'TR' AND name = '???')
En 2005 faites le à travers la vue sys.triggers
A +
Jacques (BE) a écrit : > Bonjour tout le monde, > > Je dois vérifier au lancement d'une procédure si une table X existe. > Si elle n'existe pas la créér et ensuite ajouter un trigger T. > > Je crée ma table et ensuite mon trigger. > > La première fois que je fais la vérification, il n'y a pas de problème
mais
> à la deuxième j'ai une erreur car mon trigger existe déjà. > > Est-il possible de mettre tout le code de création dans la même requête
&
> Je vérifie si la table existe. si elle n'existe pas je la crée et du
même
> coup je pourrais créer le trigger > Au deuxième passage comme ma table existe déjà , la procédure ne
tenterait
> pas de créer une > nouvelle fois le trigger et je n'aurai plus de message d'erreur. > > Peut-être est-il possible de vérifier si trigger existe comme pour la
table
> mais je ne connais > pas la syntaxe pour le faire > > > > Merci > > Jacques > > > > Voici ma procédure > > 'Je créé la table > Dim sqlCreer_Arch As String = "USE project_371 " & _ > > " IF NOT EXISTS ( SELECT * FROM project_371 " & _ > > " .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _ > > " CREATE TABLE [dbo].[Response_Arch]( " & _ > > "[RpsRespondent] [varchar](10) NOT NULL, " & _ > > "[RpsQuestion] [nvarchar](10) NOT NULL, " & _ > > "[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _ > > "[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _ > > "[RpsContent] [nvarchar](100) NULL, " & _ > > "[RpsOpened] [ntext] NULL, " & _ > > "[RpsType] [int] NOT NULL, " & _ > > "[projectId] [int] NULL, " & _ > > "[collectMode] [int] NULL, " & _ > > "[modifiedBy] [int] NULL, " & _ > > "[modified] [datetime] NULL," & _ > > "[DTIN] [datetime] NULL)" > > 'Je crée le trigger > > Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _ > > " ON [dbo].[Response_Arch]" & _ > > " AFTER INSERT,UPDATE" & _ > > " AS " & _ > > " BEGIN" & _ > > " SET NOCOUNT ON;" & _ > > " UPDATE Response_Arch SET DTIN = GETDATE()" & _ > > " END" > >
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
Bonjour (et merci),
Voici le code utilisé directement dans SQL SERVER :
IF EXISTS (SELECT *
FROM .dbo.sysobjects
WHERE xtype = 'TR'
AND name = 'MAJDATE')
CREATE TRIGGER dbo.MAJDATE
ON dbo.Response_Arch
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE Response_Arch SET DTIN = GETDATE()
END
Message d'erreur :
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'TRIGGER'.
Comment résoudre ce problème ?? Je ne suis que débutant dans SQL Server
...:-(
Merci
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:uwgmk$AHIHA.4768@TK2MSFTNGP03.phx.gbl...
Si vous êtes en 2000, testez l'existence du trigger par :
IF EXISTS (SELECT *
FROM MaBase.dbo.sysobjects
WHERE xtype = 'TR'
AND name = '???')
En 2005 faites le à travers la vue sys.triggers
A +
Jacques (BE) a écrit :
> Bonjour tout le monde,
>
> Je dois vérifier au lancement d'une procédure si une table X existe.
> Si elle n'existe pas la créér et ensuite ajouter un trigger T.
>
> Je crée ma table et ensuite mon trigger.
>
> La première fois que je fais la vérification, il n'y a pas de problème
mais
> à la deuxième j'ai une erreur car mon trigger existe déjà.
>
> Est-il possible de mettre tout le code de création dans la même requête
&
> Je vérifie si la table existe. si elle n'existe pas je la crée et du
même
> coup je pourrais créer le trigger
> Au deuxième passage comme ma table existe déjà , la procédure ne
tenterait
> pas de créer une
> nouvelle fois le trigger et je n'aurai plus de message d'erreur.
>
> Peut-être est-il possible de vérifier si trigger existe comme pour la
table
> mais je ne connais
> pas la syntaxe pour le faire
>
>
>
> Merci
>
> Jacques
>
>
>
> Voici ma procédure
>
> 'Je créé la table
> Dim sqlCreer_Arch As String = "USE project_371 " & _
>
> " IF NOT EXISTS ( SELECT * FROM project_371 " & _
>
> " .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _
>
> " CREATE TABLE [dbo].[Response_Arch]( " & _
>
> "[RpsRespondent] [varchar](10) NOT NULL, " & _
>
> "[RpsQuestion] [nvarchar](10) NOT NULL, " & _
>
> "[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _
>
> "[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _
>
> "[RpsContent] [nvarchar](100) NULL, " & _
>
> "[RpsOpened] [ntext] NULL, " & _
>
> "[RpsType] [int] NOT NULL, " & _
>
> "[projectId] [int] NULL, " & _
>
> "[collectMode] [int] NULL, " & _
>
> "[modifiedBy] [int] NULL, " & _
>
> "[modified] [datetime] NULL," & _
>
> "[DTIN] [datetime] NULL)"
>
> 'Je crée le trigger
>
> Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _
>
> " ON [dbo].[Response_Arch]" & _
>
> " AFTER INSERT,UPDATE" & _
>
> " AS " & _
>
> " BEGIN" & _
>
> " SET NOCOUNT ON;" & _
>
> " UPDATE Response_Arch SET DTIN = GETDATE()" & _
>
> " END"
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Voici le code utilisé directement dans SQL SERVER :
IF EXISTS (SELECT * FROM .dbo.sysobjects WHERE xtype = 'TR' AND name = 'MAJDATE') CREATE TRIGGER dbo.MAJDATE ON dbo.Response_Arch AFTER INSERT,UPDATE AS BEGIN SET NOCOUNT ON; UPDATE Response_Arch SET DTIN = GETDATE() END
Message d'erreur :
Msg 156, Level 15, State 1, Line 5 Incorrect syntax near the keyword 'TRIGGER'.
Comment résoudre ce problème ?? Je ne suis que débutant dans SQL Server ...:-(
Merci
"Fred BROUARD" a écrit dans le message de news:uwgmk$
Si vous êtes en 2000, testez l'existence du trigger par : IF EXISTS (SELECT * FROM MaBase.dbo.sysobjects WHERE xtype = 'TR' AND name = '???')
En 2005 faites le à travers la vue sys.triggers
A +
Jacques (BE) a écrit : > Bonjour tout le monde, > > Je dois vérifier au lancement d'une procédure si une table X existe. > Si elle n'existe pas la créér et ensuite ajouter un trigger T. > > Je crée ma table et ensuite mon trigger. > > La première fois que je fais la vérification, il n'y a pas de problème
mais
> à la deuxième j'ai une erreur car mon trigger existe déjà. > > Est-il possible de mettre tout le code de création dans la même requête
&
> Je vérifie si la table existe. si elle n'existe pas je la crée et du
même
> coup je pourrais créer le trigger > Au deuxième passage comme ma table existe déjà , la procédure ne
tenterait
> pas de créer une > nouvelle fois le trigger et je n'aurai plus de message d'erreur. > > Peut-être est-il possible de vérifier si trigger existe comme pour la
table
> mais je ne connais > pas la syntaxe pour le faire > > > > Merci > > Jacques > > > > Voici ma procédure > > 'Je créé la table > Dim sqlCreer_Arch As String = "USE project_371 " & _ > > " IF NOT EXISTS ( SELECT * FROM project_371 " & _ > > " .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _ > > " CREATE TABLE [dbo].[Response_Arch]( " & _ > > "[RpsRespondent] [varchar](10) NOT NULL, " & _ > > "[RpsQuestion] [nvarchar](10) NOT NULL, " & _ > > "[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _ > > "[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _ > > "[RpsContent] [nvarchar](100) NULL, " & _ > > "[RpsOpened] [ntext] NULL, " & _ > > "[RpsType] [int] NOT NULL, " & _ > > "[projectId] [int] NULL, " & _ > > "[collectMode] [int] NULL, " & _ > > "[modifiedBy] [int] NULL, " & _ > > "[modified] [datetime] NULL," & _ > > "[DTIN] [datetime] NULL)" > > 'Je crée le trigger > > Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _ > > " ON [dbo].[Response_Arch]" & _ > > " AFTER INSERT,UPDATE" & _ > > " AS " & _ > > " BEGIN" & _ > > " SET NOCOUNT ON;" & _ > > " UPDATE Response_Arch SET DTIN = GETDATE()" & _ > > " END" > >
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
Fred BROUARD
Mieux :
IF EXISTS (SELECT * FROM .dbo.sysobjects WHERE xtype = 'TR' AND name = 'MAJDATE') DROP TRIGGER; GO
CREATE TRIGGER dbo.MAJDATE ON dbo.Response_Arch AFTER INSERT,UPDATE AS BEGIN SET NOCOUNT ON; UPDATE Response_Arch SET DTIN = GETDATE(); WHERE LaClef IN (SELECT LaClef FROM inserted) ; END; GO
Ou LaClef est la clef de la table Response_Arch
A +
Jacques (BE) a écrit :
Bonjour (et merci),
Voici le code utilisé directement dans SQL SERVER :
IF EXISTS (SELECT * FROM .dbo.sysobjects WHERE xtype = 'TR' AND name = 'MAJDATE') CREATE TRIGGER dbo.MAJDATE ON dbo.Response_Arch AFTER INSERT,UPDATE AS BEGIN SET NOCOUNT ON; UPDATE Response_Arch SET DTIN = GETDATE() END
Message d'erreur :
Msg 156, Level 15, State 1, Line 5 Incorrect syntax near the keyword 'TRIGGER'.
Comment résoudre ce problème ?? Je ne suis que débutant dans SQL Server ...:-(
Merci
"Fred BROUARD" a écrit dans le message de news:uwgmk$
Si vous êtes en 2000, testez l'existence du trigger par : IF EXISTS (SELECT * FROM MaBase.dbo.sysobjects WHERE xtype = 'TR' AND name = '???')
En 2005 faites le à travers la vue sys.triggers
A +
Jacques (BE) a écrit :
Bonjour tout le monde,
Je dois vérifier au lancement d'une procédure si une table X existe. Si elle n'existe pas la créér et ensuite ajouter un trigger T.
Je crée ma table et ensuite mon trigger.
La première fois que je fais la vérification, il n'y a pas de problème
mais
à la deuxième j'ai une erreur car mon trigger existe déjà.
Est-il possible de mettre tout le code de création dans la même requête
&
Je vérifie si la table existe. si elle n'existe pas je la crée et du
même
coup je pourrais créer le trigger Au deuxième passage comme ma table existe déjà , la procédure ne
tenterait
pas de créer une nouvelle fois le trigger et je n'aurai plus de message d'erreur.
Peut-être est-il possible de vérifier si trigger existe comme pour la
table
mais je ne connais pas la syntaxe pour le faire
Merci
Jacques
Voici ma procédure
'Je créé la table Dim sqlCreer_Arch As String = "USE project_371 " & _
" IF NOT EXISTS ( SELECT * FROM project_371 " & _
" .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _
" CREATE TABLE [dbo].[Response_Arch]( " & _
"[RpsRespondent] [varchar](10) NOT NULL, " & _
"[RpsQuestion] [nvarchar](10) NOT NULL, " & _
"[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsContent] [nvarchar](100) NULL, " & _
"[RpsOpened] [ntext] NULL, " & _
"[RpsType] [int] NOT NULL, " & _
"[projectId] [int] NULL, " & _
"[collectMode] [int] NULL, " & _
"[modifiedBy] [int] NULL, " & _
"[modified] [datetime] NULL," & _
"[DTIN] [datetime] NULL)"
'Je crée le trigger
Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _
" ON [dbo].[Response_Arch]" & _
" AFTER INSERT,UPDATE" & _
" AS " & _
" BEGIN" & _
" SET NOCOUNT ON;" & _
" UPDATE Response_Arch SET DTIN = GETDATE()" & _
" END"
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
Mieux :
IF EXISTS (SELECT *
FROM .dbo.sysobjects
WHERE xtype = 'TR'
AND name = 'MAJDATE')
DROP TRIGGER;
GO
CREATE TRIGGER dbo.MAJDATE
ON dbo.Response_Arch
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE Response_Arch SET DTIN = GETDATE();
WHERE LaClef IN (SELECT LaClef FROM inserted) ;
END;
GO
Ou LaClef est la clef de la table Response_Arch
A +
Jacques (BE) a écrit :
Bonjour (et merci),
Voici le code utilisé directement dans SQL SERVER :
IF EXISTS (SELECT *
FROM .dbo.sysobjects
WHERE xtype = 'TR'
AND name = 'MAJDATE')
CREATE TRIGGER dbo.MAJDATE
ON dbo.Response_Arch
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE Response_Arch SET DTIN = GETDATE()
END
Message d'erreur :
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'TRIGGER'.
Comment résoudre ce problème ?? Je ne suis que débutant dans SQL Server
...:-(
Merci
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:uwgmk$AHIHA.4768@TK2MSFTNGP03.phx.gbl...
Si vous êtes en 2000, testez l'existence du trigger par :
IF EXISTS (SELECT *
FROM MaBase.dbo.sysobjects
WHERE xtype = 'TR'
AND name = '???')
En 2005 faites le à travers la vue sys.triggers
A +
Jacques (BE) a écrit :
Bonjour tout le monde,
Je dois vérifier au lancement d'une procédure si une table X existe.
Si elle n'existe pas la créér et ensuite ajouter un trigger T.
Je crée ma table et ensuite mon trigger.
La première fois que je fais la vérification, il n'y a pas de problème
mais
à la deuxième j'ai une erreur car mon trigger existe déjà.
Est-il possible de mettre tout le code de création dans la même requête
&
Je vérifie si la table existe. si elle n'existe pas je la crée et du
même
coup je pourrais créer le trigger
Au deuxième passage comme ma table existe déjà , la procédure ne
tenterait
pas de créer une
nouvelle fois le trigger et je n'aurai plus de message d'erreur.
Peut-être est-il possible de vérifier si trigger existe comme pour la
table
mais je ne connais
pas la syntaxe pour le faire
Merci
Jacques
Voici ma procédure
'Je créé la table
Dim sqlCreer_Arch As String = "USE project_371 " & _
" IF NOT EXISTS ( SELECT * FROM project_371 " & _
" .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _
" CREATE TABLE [dbo].[Response_Arch]( " & _
"[RpsRespondent] [varchar](10) NOT NULL, " & _
"[RpsQuestion] [nvarchar](10) NOT NULL, " & _
"[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsContent] [nvarchar](100) NULL, " & _
"[RpsOpened] [ntext] NULL, " & _
"[RpsType] [int] NOT NULL, " & _
"[projectId] [int] NULL, " & _
"[collectMode] [int] NULL, " & _
"[modifiedBy] [int] NULL, " & _
"[modified] [datetime] NULL," & _
"[DTIN] [datetime] NULL)"
'Je crée le trigger
Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _
" ON [dbo].[Response_Arch]" & _
" AFTER INSERT,UPDATE" & _
" AS " & _
" BEGIN" & _
" SET NOCOUNT ON;" & _
" UPDATE Response_Arch SET DTIN = GETDATE()" & _
" END"
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
IF EXISTS (SELECT * FROM .dbo.sysobjects WHERE xtype = 'TR' AND name = 'MAJDATE') DROP TRIGGER; GO
CREATE TRIGGER dbo.MAJDATE ON dbo.Response_Arch AFTER INSERT,UPDATE AS BEGIN SET NOCOUNT ON; UPDATE Response_Arch SET DTIN = GETDATE(); WHERE LaClef IN (SELECT LaClef FROM inserted) ; END; GO
Ou LaClef est la clef de la table Response_Arch
A +
Jacques (BE) a écrit :
Bonjour (et merci),
Voici le code utilisé directement dans SQL SERVER :
IF EXISTS (SELECT * FROM .dbo.sysobjects WHERE xtype = 'TR' AND name = 'MAJDATE') CREATE TRIGGER dbo.MAJDATE ON dbo.Response_Arch AFTER INSERT,UPDATE AS BEGIN SET NOCOUNT ON; UPDATE Response_Arch SET DTIN = GETDATE() END
Message d'erreur :
Msg 156, Level 15, State 1, Line 5 Incorrect syntax near the keyword 'TRIGGER'.
Comment résoudre ce problème ?? Je ne suis que débutant dans SQL Server ...:-(
Merci
"Fred BROUARD" a écrit dans le message de news:uwgmk$
Si vous êtes en 2000, testez l'existence du trigger par : IF EXISTS (SELECT * FROM MaBase.dbo.sysobjects WHERE xtype = 'TR' AND name = '???')
En 2005 faites le à travers la vue sys.triggers
A +
Jacques (BE) a écrit :
Bonjour tout le monde,
Je dois vérifier au lancement d'une procédure si une table X existe. Si elle n'existe pas la créér et ensuite ajouter un trigger T.
Je crée ma table et ensuite mon trigger.
La première fois que je fais la vérification, il n'y a pas de problème
mais
à la deuxième j'ai une erreur car mon trigger existe déjà.
Est-il possible de mettre tout le code de création dans la même requête
&
Je vérifie si la table existe. si elle n'existe pas je la crée et du
même
coup je pourrais créer le trigger Au deuxième passage comme ma table existe déjà , la procédure ne
tenterait
pas de créer une nouvelle fois le trigger et je n'aurai plus de message d'erreur.
Peut-être est-il possible de vérifier si trigger existe comme pour la
table
mais je ne connais pas la syntaxe pour le faire
Merci
Jacques
Voici ma procédure
'Je créé la table Dim sqlCreer_Arch As String = "USE project_371 " & _
" IF NOT EXISTS ( SELECT * FROM project_371 " & _
" .dbo.sysobjects WHERE Name = 'Response_Arch' AND TYPE = 'u') " & _
" CREATE TABLE [dbo].[Response_Arch]( " & _
"[RpsRespondent] [varchar](10) NOT NULL, " & _
"[RpsQuestion] [nvarchar](10) NOT NULL, " & _
"[RpsMatrix] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsMention] [int] NOT NULL DEFAULT ((1)), " & _
"[RpsContent] [nvarchar](100) NULL, " & _
"[RpsOpened] [ntext] NULL, " & _
"[RpsType] [int] NOT NULL, " & _
"[projectId] [int] NULL, " & _
"[collectMode] [int] NULL, " & _
"[modifiedBy] [int] NULL, " & _
"[modified] [datetime] NULL," & _
"[DTIN] [datetime] NULL)"
'Je crée le trigger
Dim sqlCreerTrigger = " CREATE TRIGGER [dbo].[MAJDATE]" & _
" ON [dbo].[Response_Arch]" & _
" AFTER INSERT,UPDATE" & _
" AS " & _
" BEGIN" & _
" SET NOCOUNT ON;" & _
" UPDATE Response_Arch SET DTIN = GETDATE()" & _
" END"
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************