Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2000 Forums
 SQL Server Development (2000)
 automated creation of triggers

Author  Topic 

AskSQLTeam
Ask SQLTeam Question

0 Posts

Posted - 2002-07-28 : 15:12:29
harald writes "to you have any ideas how to get the fieldnames of the pk's to get the correct syntax for the triggers?

lg
h



CREATE PROCEDURE dbo.dtrig AS

DECLARE @tablename SYSNAME
DECLARE @tid INT
DECLARE @cc INT

DECLARE tnames_cursor CURSOR
FOR
SELECT name,id FROM dbo.sysobjects WHERE OBJECTPROPERTY(id, N'IsUserTable') = 1
OPEN tnames_cursor
FETCH NEXT FROM tnames_cursor INTO @tablename,@tid
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SELECT @cc=(SELECT COUNT(*) FROM dbo.syscolumns WHERE ID=@tid AND name='AenderungsDatum')
IF(@cc > 0)
BEGIN

DECLARE @cid varchar(255)
SELECT @cid = @tablename+'ID'
DECLARE @tstr varchar(255)
SELECT @tstr = CONVERT(varchar(255),@tablename)

PRINT 'IF EXISTS (SELECT name FROM sysobjects '+
'WHERE name = '''+@tstr+'_upd_datum'' AND type = ''TR'') '+
'DROP TRIGGER '+@tstr+'_upd_datum'
PRINT 'GO'
PRINT 'CREATE TRIGGER '+@tstr+'_upd_datum '+
'ON dbo.['+@tstr+'] '+
'FOR UPDATE '+
'AS '+
'UPDATE dbo.['+@tstr+'] SET dbo.['+@tstr+'].AenderungsDatum=getdate() '+
'FROM dbo.['+@tstr+'],inserted WHERE dbo.['+@tstr+'].'+@cid+'=inserted.'+@cid
print 'GO'

-- these don't work...
--SELECT * FROM dbo.sysobjects WHERE (OBJECTPROPERTY(id, N'IsPrimaryKey') = 1 AND parent_obj=@tid)
-- is there a way to assign the result into vars?
--EXEC sp_pkeys @tablename
--print @tablename+' '+CONVERT(varchar(50),@cc)+' '+CONVERT(varchar(50),@tid)+' '+CONVERT(varchar(5),@@FETCH_STATUS)

END
FETCH NEXT FROM tnames_cursor INTO @tablename,@tid
END
CLOSE tnames_cursor
DEALLOCATE tnames_cursor
GO
"

nr
SQLTeam MVY

12543 Posts

Posted - 2002-07-31 : 13:52:44
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where TABLE_NAME = 'xxxxx'and CONSTRAINT_TYPE = 'PRIMARY KEY'

oops you probably want the col names - but still see below

and read below about cursors



==========================================
Cursors are useful if you don't know sql.
DTS can be used in a similar way.
Beer is not cold and it isn't fizzy.

Edited by - nr on 07/31/2002 13:58:39
Go to Top of Page

nr
SQLTeam MVY

12543 Posts

Posted - 2002-07-31 : 14:01:43
select COLUMN_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where CONSTRAINT_NAME = (select CONSTRAINT_NAME from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where TABLE_NAME = 'xxxx'and CONSTRAINT_TYPE = 'PRIMARY KEY')


Don't forget about the cursor though.

==========================================
Cursors are useful if you don't know sql.
DTS can be used in a similar way.
Beer is not cold and it isn't fizzy.
Go to Top of Page
   

- Advertisement -