#asp.net #sql-server #asp.net-mvc #azure #azure-sql-database
#asp.net #sql-сервер #asp.net-mvc #azure #azure-sql-database
Вопрос:
Мне нужно создать триггер DB для azure db, чтобы при нажатии пользователем кнопки изменить что-либо в таблице триггер записывал это событие в таблицу, записывал, что было изменено, временные рамки и т. Д.
В настоящее время у меня есть два основных вопроса.
1. Это моя модель
public class UserRoles
{
public int Id { get; set; }
public string UserName { get; set; }
public Boolean Address { get; set; }
public Boolean Email { get; set; }
public Boolean Work { get; set; }
public Boolean Home { get; set; }
}
public class UserRolesDbContext : DbContext
{
public UserRolesDbContext()
: base("DefaultConnection")
{
this.Database.Connection.ConnectionString = My.GetDBConnectionString();
if (!String.IsNullOrEmpty(this.Database.Connection.ConnectionString))
{
this.Database.SqlQuery("here put the SQL")
}
}
public DbSet<UserRoles> UserRolesCollection { get; set; }
}
Должен ли я поместить триггер таким образом (в SqlQuery), если я хочу, чтобы он создавался при развертывании моего облачного сервиса?В настоящее время БД создается в Azure при выполнении развертывания…
2. Предположим, что я хочу скопировать все поля с триггером DB из таблицы UserRoles в UserRolesCopy, и когда они изменились, как аудит, как я должен написать код SQL?
my schema name is :UserDB
MyOrginal table is:UserRoles
I want it to copy to UserRoleCopy
Я новичок в этой теме, и я прочитал следующую страницу в MSDN
http://msdn.microsoft.com/en-us/library/ms189799(v=sql.120).aspx
— Синтаксический триггер базы данных SQL Windows Azure
для оператора INSERT, UPDATE или DELETE для таблицы или представления (триггер DML)
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
AS { sql_statement [ ; ] [ ,...n ] [ ; ] > }
<dml_trigger_option> ::=
[ EXECUTE AS Clause ]
Комментарии:
1. На этой странице также приведены примеры
CREATE TRIGGER
— пытались ли вы адаптировать какой-либо из них и предпринять реальную попытку выполнить эту работу самостоятельно?
Ответ №1:
Вы можете использовать следующий метод для аудита изменений в таблице :
-
Используйте спецификации аудита базы данных
-
CDC (сбор данных изменений)
-
Триггер DML
>
Create Trigger yourSchema.TriggerName ON YourTable
AFTER INSERT, Update, Delete
AS Begin
-- Log Deleted Rows and Old Value in Updated Rows
Insert Into LogTable(UserName, Columns)
Select CURRENT_USER, Columns
From Deleted
-- Log Inserted Row and New Value in Updated Rows
Insert Into LogTable(UserName, Columns)
Select CURRENT_USER, Columns
From Inserted
End
Комментарии:
1. Большое спасибо проголосовавшим, поскольку я новичок в этой теме, куда мне следует поместить исходное имя таблицы (UserRoles ) и скопированную таблицу (UserRolesCopy), и куда мне следует поместить свойства таблицы или ключ, если это необходимо? …2. что такое имя триггера, таблица журнала, столбцы? должен ли я использовать его как есть жестко запрограммированным? извините за основной вопрос, я действительно новичок в этой теме…
2. Пожалуйста, посмотрите мою правку. Я предлагаю вам использовать метод 1 для изменения ваших данных в аудите. Если вы можете использовать метод 1, сообщите мне для получения дополнительной информации.
3. Спасибо, но я не могу сделать это вручную, мне нужно, чтобы он был исчерпан при развертывании моей облачной службы Azure (например, при создании таблиц), возможно ли это?
4. Я не работаю с облачной службой Azure. и я не знаю.