I want to delete and modify previously created triggers but i cant find them anywhere in database. Where they exist and how to edit or delele them
问题:
回答1:
You can find Triggers under Table node:
回答2:
Under the Tables
node in SSMS (SQL Server Management Studio), for each table there is a Triggers
node.
You can manage your triggers from there.
回答3:
Here is a better way:
select a.[name] as trgname, b.[name] as [tbname]
from sys.triggers a join sys.tables b on a.parent_id = b.object_id
Just be sure to run it against the database where you think the trigger is located.
回答4:
You can also find the triggers by querying the management views in SQL Server Management Studio:
SELECT
OBJECT_NAME(object_id) 'Table name', *
FROM
sys.triggers
That gives you a list of all triggers and what table they're defined on for your current database. You can then go on to either disable or drop them.
回答5:
To expand a little on the previous answers, in all the recent versions of SQL Server you can right click on a trigger and choose: Script Trigger as… ALTER To… "New Query Editor Window"
This will open an SQL script with the details of the trigger, if you read the code you will notice that it includes the ALTER syntax: ALTER TRIGGER [dbo].triggername ...
This means you can edit the SQL and press Execute to alter the trigger - this will overwrite the previous definition.
If the triggers have been built using automated tools, you may find duplicate code in the trigger definition which you will want to remove.
It is worth trying to Execute the script first before trying to edit anything, that will tell you if the trigger definition is valid. If a table or column has been renamed, things can get out of sync.
Similarly to Delete/Drop a trigger completely select: Script Trigger as… DROP To… "New Query Editor Window"
and then execute it.