Advertisement
worstbull

how to create table

Oct 5th, 2015
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.26 KB | None | 0 0
  1. ;******************************** = TABELLEN-NAME AN DIESER STELLE EINTRAGEN
  2.  
  3.  
  4.  
  5. DECLARE  
  6.       @object_name SYSNAME  
  7.     , @object_id INT  
  8.     , @SQL NVARCHAR(MAX)  
  9.  
  10. SELECT  
  11.       @object_name = '[' + OBJECT_SCHEMA_NAME(o.[object_id]) + '].[' + OBJECT_NAME([object_id]) + ']'  
  12.     , @object_id = [object_id]  
  13. FROM (SELECT [object_id] = OBJECT_ID('*****************************', 'U')) o  
  14.  
  15. SELECT 'CREATE TABLE ' + @object_name + CHAR(13) + '(' + CHAR(13) + STUFF((  
  16.     SELECT CHAR(13) + '    , [' + c.name + '] ' +  
  17.         CASE WHEN c.is_computed = 1  
  18.             THEN 'AS ' + OBJECT_DEFINITION(c.[object_id], c.column_id)  
  19.             ELSE  
  20.                 CASE WHEN c.system_type_id != c.user_type_id  
  21.                     THEN '[' + SCHEMA_NAME(tp.[schema_id]) + '].[' + tp.name + ']'  
  22.                     ELSE '[' + UPPER(tp.name) + ']'  
  23.                 END  +  
  24.                 CASE  
  25.                     WHEN tp.name IN ('varchar', 'char', 'varbinary', 'binary')  
  26.                         THEN '(' + CASE WHEN c.max_length = -1  
  27.                                         THEN 'MAX'  
  28.                                         ELSE CAST(c.max_length AS VARCHAR(5))  
  29.                                     END + ')'  
  30.                     WHEN tp.name IN ('nvarchar', 'nchar')  
  31.                         THEN '(' + CASE WHEN c.max_length = -1  
  32.                                         THEN 'MAX'  
  33.                                         ELSE CAST(c.max_length / 2 AS VARCHAR(5))  
  34.                                     END + ')'  
  35.                     WHEN tp.name IN ('datetime2', 'time2', 'datetimeoffset')  
  36.                         THEN '(' + CAST(c.scale AS VARCHAR(5)) + ')'  
  37.                     WHEN tp.name = 'decimal'  
  38.                         THEN '(' + CAST(c.[PRECISION] AS VARCHAR(5)) + ',' + CAST(c.scale AS VARCHAR(5)) + ')'  
  39.                     ELSE ''  
  40.                 END +  
  41.                 CASE WHEN c.collation_name IS NOT NULL AND c.system_type_id = c.user_type_id  
  42.                     THEN ' COLLATE ' + c.collation_name  
  43.                     ELSE ''  
  44.                 END +  
  45.                 CASE WHEN c.is_nullable = 1  
  46.                     THEN ' NULL'  
  47.                     ELSE ' NOT NULL'  
  48.                 END +  
  49.                 CASE WHEN c.default_object_id != 0  
  50.                     THEN ' CONSTRAINT [' + OBJECT_NAME(c.default_object_id) + ']' +  
  51.                          ' DEFAULT ' + OBJECT_DEFINITION(c.default_object_id)  
  52.                     ELSE ''  
  53.                 END +  
  54.                 CASE WHEN cc.[object_id] IS NOT NULL  
  55.                     THEN ' CONSTRAINT [' + cc.name + '] CHECK ' + cc.[definition]  
  56.                     ELSE ''  
  57.                 END +  
  58.                 CASE WHEN c.is_identity = 1  
  59.                     THEN ' IDENTITY(' + CAST(IDENTITYPROPERTY(c.[object_id], 'SeedValue') AS VARCHAR(5)) + ',' +  
  60.                                     CAST(IDENTITYPROPERTY(c.[object_id], 'IncrementValue') AS VARCHAR(5)) + ')'  
  61.                     ELSE ''  
  62.                 END  
  63.         END  
  64.     FROM sys.COLUMNS c WITH(NOLOCK)  
  65.     JOIN sys.types tp WITH(NOLOCK) ON c.user_type_id = tp.user_type_id  
  66.     LEFT JOIN sys.check_constraints cc WITH(NOLOCK)  
  67.          ON c.[object_id] = cc.parent_object_id  
  68.         AND cc.parent_column_id = c.column_id  
  69.     WHERE c.[object_id] = @object_id  
  70.     ORDER BY c.column_id  
  71.     FOR XML PATH(''), TYPE).VALUE('.', 'NVARCHAR(MAX)'), 1, 7, '      ') +  
  72.     ISNULL((SELECT '  
  73.    , CONSTRAINT [' + i.name + '] PRIMARY KEY ' +  
  74.     CASE WHEN i.index_id = 1  
  75.         THEN 'CLUSTERED'  
  76.         ELSE 'NONCLUSTERED'  
  77.     END +' (' + (  
  78.     SELECT STUFF(CAST((  
  79.         SELECT ', [' + COL_NAME(ic.[object_id], ic.column_id) + ']' +  
  80.                 CASE WHEN ic.is_descending_key = 1  
  81.                     THEN ' DESC'  
  82.                     ELSE ''  
  83.                 END  
  84.         FROM sys.index_columns ic WITH(NOLOCK)  
  85.         WHERE i.[object_id] = ic.[object_id]  
  86.             AND i.index_id = ic.index_id  
  87.         FOR XML PATH(N''), TYPE) AS NVARCHAR(MAX)), 1, 2, '')) + ')'  
  88.     FROM sys.indexes i WITH(NOLOCK)  
  89.     WHERE i.[object_id] = @object_id  
  90.         AND i.is_primary_key = 1), '') + CHAR(13) + ');'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement