Create an extra table (copy the columns and new table) for every existing table

Please support our MS SQL advertiser: Intel Parallel Studio Home
Reply

Join Date: Mar 2008
Posts: 1
Reputation: sauronbrad is an unknown quantity at this point 
Solved Threads: 0
sauronbrad sauronbrad is offline Offline
Newbie Poster

Create an extra table (copy the columns and new table) for every existing table

 
0
  #1
Mar 28th, 2008
Hi all, please help. I m trying to create an "empty" table from existing table for the audit trigger purpose.
For now, i am trying to create an empty audit table for every table in a database named "pubs", and it's seem won't work.
Please advise.. Thanks in advance.

Here is my code:


  1. USE pubs
  2.  
  3. DECLARE @TABLE_NAME sysname
  4. DECLARE @AUDIT_TABLE VARCHAR(50)
  5.  
  6. SELECT @TABLE_NAME= MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  7. WHERE
  8. TABLE_TYPE= 'BASE TABLE'
  9. AND TABLE_NAME NOT LIKE 'audit%'
  10. AND TABLE_NAME!= 'sysdiagrams'
  11. AND TABLE_NAME!= 'Audit'
  12. AND TABLE_NAME = 'sales'
  13.  
  14. WHILE @TABLE_NAME IS NOT NULL
  15. BEGIN
  16.  
  17. SELECT @TABLE_NAME= MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  18. WHERE TABLE_NAME> @TABLE_NAME
  19. AND TABLE_NAME = 'sales'
  20.  
  21. SELECT @AUDIT_TABLE = 'Audit'+''@TABLE_NAME''
  22.  
  23.  
  24. SELECT * INTO @AUDIT_TABLE
  25. FROM @TABLE_NAME
  26.  
  27. TRUNCATE TABLE @AUDIT_TABLE
  28. ALTER TABLE @AUDIT_TABLE ADD UserAction Char(10),AuditStartTime Char(50),AuditUser Char(50)
  29.  
  30.  
  31. SELECT @TABLE_NAME= MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  32. WHERE TABLE_NAME> @TABLE_NAME
  33. AND TABLE_TYPE= 'BASE TABLE'
  34. AND TABLE_NAME!= 'sysdiagrams'
  35. AND TABLE_NAME!= 'Audit'
  36. AND TABLE_NAME NOT LIKE 'audit%'
  37.  
  38. END


Thanks. ..
Reply With Quote Quick reply to this message  
Join Date: Jun 2007
Posts: 95
Reputation: manoshailu is an unknown quantity at this point 
Solved Threads: 9
manoshailu's Avatar
manoshailu manoshailu is offline Offline
Junior Poster in Training

Re: Create an extra table (copy the columns and new table) for every existing table

 
0
  #2
Apr 10th, 2008
hi,

Your code is right but u had used the @TABLE_NAME AND @AUDIT_TABLE. Both the variables are not the Table type so it wont allow to create the table to your requirement. Store the query in a string variable and have to execute.

Try the Below Coding:

  1. DECLARE @TABLE_NAME SYSNAME
  2. DECLARE @AUDIT_TABLE VARCHAR(50)
  3. DECLARE @SQL VARCHAR(100)
  4.  
  5. SELECT @TABLE_NAME= MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  6. WHERE
  7. TABLE_TYPE= 'BASE TABLE'
  8. AND TABLE_NAME NOT LIKE 'audit%'
  9. AND TABLE_NAME!= 'sysdiagrams'
  10. AND TABLE_NAME!= 'Audit'
  11. AND TABLE_NAME = 'sales'
  12.  
  13. WHILE @TABLE_NAME IS NOT NULL
  14. BEGIN
  15.  
  16. SELECT @TABLE_NAME= MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.Tables
  17. WHERE TABLE_NAME> @TABLE_NAME
  18. AND TABLE_TYPE= 'BASE TABLE'
  19. AND TABLE_NAME!= 'sysdiagrams'
  20. AND TABLE_NAME!= 'Audit'
  21. --AND TABLE_NAME = 'sales'
  22.  
  23. SET @AUDIT_TABLE = 'Audit'+ @TABLE_NAME
  24. SELECT @AUDIT_TABLE
  25. SELECT @TABLE_NAME
  26.  
  27. ---Drop THE TABLE IF EXISTS
  28. SET @SQL ='DROP TABLE ' + @AUDIT_TABLE
  29. EXEC (@SQL)
  30.  
  31. --CREATE THE STRUCTURE OF THE TABLE FROM THE ANOTHER TABLE
  32. SET @SQL= 'SELECT * INTO ' + @AUDIT_TABLE + ' FROM ' + @TABLE_NAME
  33. EXEC (@SQL)
  34.  
  35. --REMOVE THE RECORDS IF EXISTS
  36. SET @SQL= 'TRUNCATE TABLE ' + @AUDIT_TABLE
  37. EXEC (@SQL)
  38.  
  39. --ADD COLUMNS TO THE TABLE
  40. SET @SQL= 'ALTER TABLE ' + @AUDIT_TABLE + ' ADD UserAction Char(10),AuditStartTime Char(50),AuditUser Char(50)'
  41. EXEC (@SQL)
  42.  
  43.  
  44. SELECT @TABLE_NAME= MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.Tables
  45. WHERE TABLE_NAME> @TABLE_NAME
  46. AND TABLE_TYPE= 'BASE TABLE'
  47. AND TABLE_NAME!= 'sysdiagrams'
  48. AND TABLE_NAME!= 'Audit'
  49. AND TABLE_NAME NOT LIKE 'audit%'
  50.  
  51.  
  52.  
  53. END
Have a nice Day
Shailaja
Last edited by peter_budo; Apr 10th, 2008 at 5:19 pm. Reason: Keep It Organized - please use [code] tags
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC