Как делают Вас priortize несколько триггеров таблицы?

Итак, я считаю, что правильный ответ на этот вопрос: префикс должен быть настроен в фактическом серверном приложении, которое вы используете, когда разработка завершена. Apache, nginx и т. Д.

Однако, если вы хотите, чтобы это работало во время разработки при запуске приложения Flask при отладке, посмотрите на этот gist .

Флажок DispatcherMiddleware для спасения!

Я скопирую код здесь для потомков:

"Serve a Flask app on a sub-url during localhost development."

from flask import Flask


APPLICATION_ROOT = '/spam'


app = Flask(__name__)
app.config.from_object(__name__)  # I think this adds APPLICATION_ROOT
                                  # to the config - I'm not exactly sure how!
# alternatively:
# app.config['APPLICATION_ROOT'] = APPLICATION_ROOT


@app.route('/')
def index():
    return 'Hello, world!'


if __name__ == '__main__':
    # Relevant documents:
    # http://werkzeug.pocoo.org/docs/middlewares/
    # http://flask.pocoo.org/docs/patterns/appdispatch/
    from werkzeug.serving import run_simple
    from werkzeug.wsgi import DispatcherMiddleware
    app.config['DEBUG'] = True
    # Load a dummy app at the root URL to give 404 errors.
    # Serve app at APPLICATION_ROOT for localhost development.
    application = DispatcherMiddleware(Flask('dummy_app'), {
        app.config['APPLICATION_ROOT']: app,
    })
    run_simple('localhost', 5000, application, use_reloader=True)

Теперь при запуске вышеуказанного кода в качестве автономного приложения Flask , http://localhost:5000/spam/ отобразит Hello, world!.

В комментарии к другому ответу я сказал, что хотел сделать что-то вроде этого:

from flask import Flask, Blueprint

# Let's pretend module_blueprint defines a route, '/record//'
from some_submodule.flask import module_blueprint

app = Flask(__name__)
app.config['APPLICATION_ROOT'] = '/api'
app.register_blueprint(module_blueprint, url_prefix='/some_submodule')
app.run()

# I now would like to be able to get to my route via this url:
# http://host:8080/api/some_submodule/record/1/

Применение DispatcherMiddleware к мой надуманный пример:

from flask import Flask, Blueprint
from flask.serving import run_simple
from flask.wsgi import DispatcherMiddleware

# Let's pretend module_blueprint defines a route, '/record//'
from some_submodule.flask import module_blueprint

app = Flask(__name__)
app.config['APPLICATION_ROOT'] = '/api'
app.register_blueprint(module_blueprint, url_prefix='/some_submodule')
application = DispatcherMiddleware(Flask('dummy_app'), {
    app.config['APPLICATION_ROOT']: app
})
run_simple('localhost', 5000, application, use_reloader=True)

# Now, this url works!
# http://host:8080/api/some_submodule/record/1/

5
задан Alireza 4 July 2017 в 09:20
поделиться

4 ответа

Используйте sp_settriggerorder. Можно указать первый и последний триггер для увольнения в зависимости от операции.

sp_settriggerorder на MSDN

Из вышеупомянутой ссылки:
A. Устанавливание порядка увольнения для триггера DML
Следующий пример указывает, что триггер uSalesOrderHeader быть первым триггером, который будет стрелять после операции ОБНОВЛЕНИЯ, происходит на Продажах. Таблица SalesOrderHeader.

USE AdventureWorks;
GO
sp_settriggerorder 
    @triggername= 'Sales.uSalesOrderHeader', 
    @order='First', 
    @stmttype = 'UPDATE';

B. Устанавливание порядка увольнения для триггера DDL
Следующий пример указывает, что триггер ddlDatabaseTriggerLog быть первым триггером, который будет стрелять после события ALTER_TABLE, происходит в базе данных AdventureWorks.

USE AdventureWorks;
GO
sp_settriggerorder 
    @triggername= 'ddlDatabaseTriggerLog', 
    @order='First', 
    @stmttype = 'ALTER_TABLE', 
    @namespace = 'DATABASE';
6
ответ дан 14 December 2019 в 04:51
поделиться

Посмотрите здесь.

1
ответ дан 14 December 2019 в 04:51
поделиться

Можно использовать sp_settriggerorder для определения порядка каждого, включают таблицу.

Однако я утверждал бы, что Вы будете очень более обеспеченным наличием единственного триггера, который делает несколько вещей. Это особенно поэтому, если порядок будет важен, то так как та важность не будет очень очевидна, если у Вас будет несколько триггеров. Вообразите кого-то пытающегося поддерживать базу данных, months/years вниз дорожка. Конечно, вероятно, будут случаи, где у Вас должно быть несколько триггеров, или это действительно - лучший дизайн, но я начал бы предполагать, что Вы должны иметь один и работать оттуда.

1
ответ дан 14 December 2019 в 04:51
поделиться

Rememebr, если Вы изменяете триггерный порядок, кто-то еще мог бы приехать позже и перестроить его снова. И то, где Вы зарегистрировали бы то, что триггерный порядок должен быть так разработчиком обслуживания, знает для не питания с порядком, или вещи повредятся? Если две триггерных задачи определенно должны быть выполнены в определенном порядке, единственный безопасный маршрут должен поместить их в тот же триггер.

0
ответ дан 14 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: