Listing 1
sqlPrimaryKeys = "SELECT " +
"kcu.constraint_name, kcu.table_name, " +
"kcu.column_name " +
"FROM " +
"INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU " + "INNER JOIN " +
"INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC " +
"ON TC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME " + "WHERE " +
"TC.CONSTRAINT_TYPE = 'PRIMARY KEY' " +
"AND OBJECTPROPERTY(OBJECT_ID(KCU.TABLE_NAME)"+ ",'IsMSShipped')=0";
Listing 2
DataSet dsTrigger = new DataSet("Triggers");
SqlDataAdapter da = new SqlDataAdapter(sqlAllTables, con);
da.Fill(dsTrigger, "AllTables");
da.SelectCommand.CommandText = sqlPrimaryKeys;
da.Fill(dsTrigger, "PrimaryKeys");
DataTable dtTables = dsTrigger.Tables["AllTables"];
DataTable dtKeys = dsTrigger.Tables["PrimaryKeys"];
Listing 3
foreach (DataRow parentrow in dtTables.Rows)
{
sqlWhere = "";
tableName = parentRow["Table_name"].ToString();
sqlDropTriggers = "DROP TRIGGER trg_insert_" + tableName +
Environment.NewLine +
"DROP TRIGGER trg_update_" + tableName +
Environment.NewLine;
sqlInsert = "CREATE TRIGGER trg_insert_" + tableName +
" ON [dbo].[" + tableName + "]" +
" FOR INSERT " +
" AS " +
" UPDATE " + tableName +
" set DateCreated=GetDate(), DateModified=GetDate()"+
" WHERE ";
sqlUpdate = "CREATE TRIGGER trg_update_" + tableName +
" ON [dbo].[" + tableName + "]" +
" FOR UPDATE " +
" AS " +
" UPDATE " + tableName +
" set DateModified=GetDate() " +
" WHERE ";
foreach (DataRow childRow in
parentRow.GetChildRows("Tables_Keys"))
{
sqlWhere += tableName + "." +
childRow["column_name"].ToString() + " = " +
"(select " + childRow["column_name"].ToString()
+ " from inserted) and ";
}
sqlWhere = sqlWhere.Substring(0, sqlWhere.Length - 4);
sqlInsert += sqlWhere;
sqlUpdate += sqlUpdate;
tbOutput.Text = tbOutput.Text + sqlDropTriggers +
Environment.NewLine + "GO" +
Environment.NewLine +
sqlInsert + Environment.NewLine + "GO" +
Environment.NewLine + sqlUpdate + Environment.NewLine
+ "GO" + Environment.NewLine;
}