Skenario:
Anda bekerja sebagai Pengembang SQL Server, perusahaan Anda memiliki database dengan banyak tabel. Setiap Tabel memiliki beberapa kolom audit seperti CreatedOn, CreatedBy. Tidak ada Batasan default yang pernah dibuat pada mereka. Anda ingin membuat Batasan Default pada Kolom CreatedOn untuk semua tabel dengan nilai getdate(), Anda juga ingin membuat Batasan Default untuk CreatedBy=SUSER_SNAME(). Anda mungkin memiliki kolom lain dengan tipe string dan Anda ingin membuat skrip untuk itu juga.Solusi:
Skrip di bawah ini dapat digunakan untuk menghasilkan Batasan Default untuk kolom yang diberikan di seluruh database untuk semua tabel. Nama untuk Default Constraint adalah DF_SchemaName_TableName_ColumnName.Mari buat skrip Default Constraint untuk kolom CreatedOn dengan nilai Getdate() dengan menggunakan skrip di bawah ini.
Declare @ColumnName VARCHAR(128) Declare @DefaultValue VARCHAR(100) SET @ColumnName='CreatedON' SET @DefaultValue='Getdate()' Select Schema_Name(Schema_id) as SchemaName, t.Name as TableName, C.Name as ColumnName, 'Alter Table ['+Schema_Name(Schema_id) +'].['+t.Name+']' +' Add Constraint DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraint from sys.tables t inner join sys.columns c on t.object_id=c.object_id and t.is_ms_shipped=0 and c.name=@ColumnName
Buat Skrip untuk Menambahkan Batasan Default ke Kolom di Database di SQL Server |
Anda hanya perlu mengubah variabel @ColumnName dan @DefaultValue sesuai kebutuhan Anda. Mari gunakan skrip yang sama untuk menambahkan Batasan Default ke Kolom CreatedBy dengan value=SUSER_SNAME().
Declare @ColumnName VARCHAR(128) Declare @DefaultValue VARCHAR(100) SET @ColumnName='CreatedBy' SET @DefaultValue='SUSER_SNAME()' Select Schema_Name(Schema_id) as SchemaName, t.Name as TableName, C.Name as ColumnName, 'Alter Table ['+Schema_Name(Schema_id) +'].['+t.Name+']' +' Add Constraint DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraint from sys.tables t inner join sys.columns c on t.object_id=c.object_id and t.is_ms_shipped=0 and c.name=@ColumnName
Cara membuat skrip untuk menambahkan Batasan Default pada kolom di Database SQL Server |
Sekarang mari kita pertimbangkan bahwa Anda ingin menetapkan nilai default ke beberapa nilai string karena kita ingin membuat Batasan Default untuk Wilayah kolom='USA' , Saat menetapkan nilai variabel @DefaultValue, tambahkan tanda kutip tunggal seperti yang ditunjukkan di bawah ini.
Declare @ColumnName VARCHAR(128) Declare @DefaultValue VARCHAR(100) SET @ColumnName='Region' SET @DefaultValue='''USA''' Select Schema_Name(Schema_id) as SchemaName, t.Name as TableName, C.Name as ColumnName, 'Alter Table ['+Schema_Name(Schema_id) +'].['+t.Name+']' +' Add Constraint DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraint from sys.tables t inner join sys.columns c on t.object_id=c.object_id and t.is_ms_shipped=0 and c.name=@ColumnName
Cara membuat skrip untuk menambahkan Batasan Default pada Kolom di beberapa Tabel di Database SQL Server |
Demo Video :Buat Skrip untuk menambahkan Batasan Default ke Kolom di Beberapa Tabel di Database SQL Server