Мобильная служба Windows Azure: выполнение хранимой процедуры вставки в триггере данных

Мне нужно вызвать хранимую процедуру при вызове триггера Insert Script. Идея заключается в использовании хранимой процедуры для вставки строк в 3 таблицы, включая исходную таблицу.

У меня есть следующие таблицы - автомобили - производители - модели

хранимая процедура получает данные об автомобиле, имя производителя и название модели. SP просматривает таблицу производителей и моделей и вставляет новую запись, если она не найдена.

Это мой код триггера скрипта:

function insert(item, user, request) {     
var params = [item.name, item.year, item.maker_name, item.model];
var sql = "exec myCars.sp_insert_car ?, ?, ?, ?";
mssql.query(sql, params,
{
    success: function(results) {
        request.respond(statusCodes.OK,{ 
            results: results,
            count: 1
        });       
    }        
});
}

Поскольку процедура sp_insert_car вставляет строку в таблицу cars, триггер вызывается снова. Странно то, что он также вызывается, когда вставляется новый производитель или модель.

Есть ли способ отключить второй вызов триггера?

Кроме того, SP имеет выходной параметр, который возвращает новый идентификатор автомобиля. Есть ли способ получить этот выходной параметр?

Я ценю любую помощь, которую вы можете предоставить


person FelipeOliveira    schedule 19.05.2013    source источник


Ответы (2)


Я думаю, вы хотите сначала запустить request.execute, чтобы получить данные в исходной таблице. Затем в функции успеха запустите хранимую процедуру, чтобы добавить данные, если они отсутствуют, в другие таблицы. Что-то в духе...

function insert(item, user, request) {
    request.execute({
        success: function() {
            var params = [item.name, item.year, item.maker_name, item.model];
            var sql = "myCars.sp_insert_car ?, ?, ?, ?";
            mssql.query(sql, params, {
                success: function(results) {
                    request.respond(statusCodes.OK,{ 
                        results: results,
                        count: 1
                    });
                }
            });
        }
    });
}

Это также позволяет вам получить идентификатор только что вставленной строки в исходной таблице, item.id, для использования в качестве переданного параметра для хранимой процедуры, если вам это нужно.

person XtopherSD    schedule 29.05.2013

add this  line ...

вар mssql=request.service.mssql;

выше подчеркивание

mssql.query("EXEC dbo.Sp_User_Authentication?,?",request.query.username,request.query.password)

person satyendra    schedule 29.07.2015