powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Триггер AFTER INSERT
5 сообщений из 5, страница 1 из 1
Триггер AFTER INSERT
    #38433457
SerjInsane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в C# написал вот такой метод INSERT:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public void insertIncome(DateTime date, string name, string cath, long sum)
        { 
            IncomeAdap.InsertCommand = new SqlCommand("INSERT INTO Income VALUES(@date, @name, @cath, @sum);" +
                                                      "SELECT * FROM Income WHERE Дата = @date AND " +
                                                      "[Член семьи] = @name AND [Категория дохода] = @cath AND " +           
                                                      "[Сумма, руб] = @sum", dbConnection);
            IncomeAdap.InsertCommand.Parameters.Add(new SqlParameter("@date", date));
            IncomeAdap.InsertCommand.Parameters.Add(new SqlParameter("@name", name));
            IncomeAdap.InsertCommand.Parameters.Add(new SqlParameter("@cath", cath));
            IncomeAdap.InsertCommand.Parameters.Add(new SqlParameter("@sum", sum));
            IncomeAdap.InsertCommand.ExecuteNonQuery();            
        }


а так же имеется вот такой триггер(тут я конечно не совсем силен):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TRIGGER uniteIncome
ON dbo.Income
AFTER INSERT AS 
BEGIN
	DECLARE @summ bigint = 0, @date date
	SELECT @summ = dbo.Income.[Сумма, руб], @date=dbo.Income.Дата FROM dbo.Income
	IF ((SELECT dbo.Common.Дата FROM dbo.Common) = @date)
	BEGIN
		UPDATE dbo.Common
		SET dbo.Common.Доход += @summ, dbo.Common.Оборот += @summ
		WHERE dbo.Common.Дата = @date
	END
	ELSE
		INSERT INTO dbo.Common VALUES (@date, @summ, 0, @summ)
END


при выполнении IncomeAdap.InsertCommand.ExecuteNonQuery(); выпадает исключение:
Код: sql
1.
2.
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.


помогите разобраться в чем проблема.
...
Рейтинг: 0 / 0
Триггер AFTER INSERT
    #38433472
igr_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SerjInsane,

Обычно такое сообщение вылазит, когда у таблицы есть триггер и выполняется изменение более чем одной записи
...
Рейтинг: 0 / 0
Триггер AFTER INSERT
    #38433491
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
IF ((SELECT dbo.Common.Дата FROM dbo.Common) = @date)



Твой Select получает из таблицы Common НАБОР записей. Как набор можно сравнить с @date?
...
Рейтинг: 0 / 0
Триггер AFTER INSERT
    #38433539
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris
Код: c#
1.
IF ((SELECT dbo.Common.Дата FROM dbo.Common) = @date)



Твой Select получает из таблицы Common НАБОР записей. Как набор можно сравнить с @date?Все еще хуже - там 2 "набора":
Код: sql
1.
2.
	SELECT @summ = dbo.Income.[Сумма, руб], @date=dbo.Income.Дата FROM dbo.Income
	IF ((SELECT dbo.Common.Дата FROM dbo.Common) = @date)
...
Рейтинг: 0 / 0
Триггер AFTER INSERT
    #38433540
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerjInsaneа так же имеется вот такой триггер(тут я конечно не совсем силен)
Угу, не совсем:) Рекомендую либо разобраться хотя бы в этом - inserted and deleted Tables , либо отказаться от использования триггера.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Триггер AFTER INSERT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]