Это точный запрос? - PullRequest
       1

Это точный запрос?

0 голосов
/ 31 января 2012

У меня есть две таблицы

Inbox(id,accountid,emailfrom,emailsubject,emailbody,emaildate,attachment)
Trash(as above)

Когда пользователь хочет удалить строку из inboxDataGridView, сначала эта строка копируется в таблицу trash. Я пытаюсь этот запрос сначала скопировать строку:

string query = "INSERT INTO Trash(inboxid, accountid, emailfrom, subject, emailbody,emaildate,attachment) SELECT inboxid, accountid, emailfrom, subject, emailbody,emaildate,attachment FROM Inbox WHERE(inboxid = " + accountinfo.PEmailId + ")";(where accountinfo.PEmailId = selectedRow value

но этот запрос выдает мне ошибку.

Пожалуйста, сообщите мне, как я могу это сделать, скопировать и удалить.

Ответы [ 2 ]

1 голос
/ 31 января 2012

Это должно работать:

Вставка:

INSERT INTO Trash(id, accountid, emailfrom, subject, emailbody,
   emaildate,attachment)
SELECT id, accountid, emailfrom, subject, emailbody,emaildate,attachment 
FROM Inbox 
WHERE id = @id

Удалить:

DELETE Inbox
WHERE id = @id

Вы должны выполнить операторы, либо в той же команде или в виде двух отдельных команд внутри транзакции в зависимости от того, хотите ли вы выполнить что-то еще между ними.Параметр @id следует указывать в качестве параметра команды, чтобы предотвращать атаки SQL-инъекций .

Если вы хотите, чтобы часть решения была на стороне базы данных, вы можете создать ее какхранимая процедура или , как @ThitLwinOo предлагает создать триггер.Если вы используете подход триггера, оператора Delete достаточно для выполнения из вашей программы.

0 голосов
/ 31 января 2012

На самом деле, существует простой и лучший способ выполнить то, что вы хотите, написав триггер при снятии. Что такое БД? SQL Server?

Я предполагаю, что ваша БД - Sql Server. Пожалуйста, попробуйте следующий триггер в ur db.


CREATE TRIGGER [dbo].[tri_BACKUP_DELETED_ROWS] 

ON [dbo].[Inbox]

AFTER DELETE

AS 

BEGIN

    SET NOCOUNT ON;

    -- Insert statements for trigger here
    IF EXISTS (SELECT * FROM deleted)
    BEGIN
        -- keep old record
        INSERT INTO Trash(inboxid, accountid, emailfrom, subject, emailbody,emaildate,attachment)       
        SELECT inboxid, accountid, emailfrom, subject, emailbody,emaildate,attachment 
        FROM DELETED
    END

END

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...