|
|
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
Недавно всвязи спереходом на SQL сервер возник вопрос. Когда идеологически правильно использовать триггеры а когда лучше другие средства? Для себя пока придумал такое "правило": при удалении записей из справочника зануляю ссылки на этот справочник в основной базе. Дабы не было висящих ссылок. А как еще и для чего? --- Origin 2:5000/104.77: Женщины и виски размягчают мозг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2004, 12:04:05 |
|
||
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
Да триггеры это такая вещь, без которых не создать серьезную базу данных. Например, подсчет общей суммы в одной таблице, при изменении какой либо записи в другой... да масса всего еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2004, 23:47:19 |
|
||
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
Для человека, привыкшего к Аксессу, триггер - это как событие. Но событие привязано к форме. Если ту же операцию произвести через другую форму, или через программу, или прямо в таблице руками, - событие не сработает. А триггер сработает всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2004, 23:49:05 |
|
||
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
Владимир СанычДля человека, привыкшего к Аксессу, триггер - это как событие. Но событие привязано к форме. Если ту же операцию произвести через другую форму, или через программу, или прямо в таблице руками, - событие не сработает. А триггер сработает всегда. Что такое триггер мне понятно. Я хотел прояснить ОБЛАСТИ ПРИМЕНЕНИЯ. Не общие фразы типа вот тут поменяли а тут само а именно с примером. Мне тут такую мысль двинули в качестве примера: Есть поля фамилия, имя, отчество и поле ФИО - где все слеплено и которое заполняется триггером. Но тут же вопрос а замем нужно такое поле и не проще ли слепить Ф+И+О именно в том месте где надо это использовать.??? IMHO глупый пример. Ваши мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2004, 12:56:44 |
|
||
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
Alexandr GruzdevДа триггеры это такая вещь, без которых не создать серьезную базу данных. Например, подсчет общей суммы в одной таблице, при изменении какой либо записи в другой... да масса всего еще. А тебе необходимо общую сумму постоянно хранить в таблице или все таки она лишь иногда нужна для отчета? IMHO лучше считать именно в том месте где требуется? ... Вот и был вопрос про _идеологию_. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2004, 12:58:39 |
|
||
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
У меня в БД заведен триггер, делает историю изменений некоторого поля. При изменении этого поля, добавляет запись в специальную таблицу. Просто запарился в самом Аксессе следить за этими изменениями. Малой кровью, как говорится, добился желаемого результата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2004, 13:49:07 |
|
||
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
BOL: Enforcing Business Rules with Triggers Microsoft® SQL Server™ 2000 provides two primary mechanisms for enforcing business rules and data integrity : constraints and triggers. A trigger is a special type of stored procedure that automatically takes effect when the data in a specified table is modified. A trigger is invoked in response to an INSERT, UPDATE, or DELETE statement. A trigger can query other tables and can include complex Transact-SQL statements. The trigger and the statement that fires it are treated as a single transaction, which can be rolled back from within the trigger. If a severe error is detected (for example, insufficient disk space), the entire transaction automatically rolls back. Triggers are useful in these ways: Triggers can cascade changes through related tables in the database; however, these changes can be executed more efficiently using cascading referential integrity constraints. Triggers can enforce restrictions that are more complex than those defined with CHECK constraints. Unlike CHECK constraints, triggers can reference columns in other tables. For example, a trigger can use a SELECT from another table to compare to the inserted or updated data and to perform additional actions, such as modify the data or display a user-defined error message. Triggers can also evaluate the state of a table before and after a data modification and take action(s) based on that difference. Multiple triggers of the same type (INSERT, UPDATE, or DELETE) on a table allow multiple, different actions to take place in response to the same modification statement. Triggers Compared to Constraints Constraints and triggers each have benefits that make them useful in special situations. The primary benefit of triggers is that they can contain complex processing logic that uses Transact-SQL code. Therefore, triggers can support all of the functionality of constraints; however, triggers are not always the best method for a given feature. Entity integrity should always be enforced at the lowest level by indexes that are part of PRIMARY KEY and UNIQUE constraints or are created independently of constraints. Domain integrity should be enforced through CHECK constraints, and referential integrity (RI) should be enforced through FOREIGN KEY constraints, assuming their features meet the functional needs of the application. Triggers are most useful when the features supported by constraints cannot meet the functional needs of the application. For example: FOREIGN KEY constraints can validate a column value only with an exact match to a value in another column, unless the REFERENCES clause defines a cascading referential action. A CHECK constraint can validate a column value only against a logical expression or another column in the same table. If your application requires that a column value be validated against a column in another table, you must use a trigger. Constraints can communicate about errors only through standardized system error messages. If your application requires (or can benefit from) customized messages and more complex error handling, you must use a trigger. Triggers can cascade changes through related tables in the database; however, these changes can be executed more efficiently through cascading referential integrity constraints. Triggers can disallow or roll back changes that violate referential integrity, thereby canceling the attempted data modification. Such a trigger might go into effect when you change a foreign key and the new value does not match its primary key. For example, you can create an insert trigger on titleauthor.title_id that rolls back an insert if the new value does not match some value in titles.title_id. However, FOREIGN KEY constraints are usually used for this purpose. If constraints exist on the trigger table, they are checked after the INSTEAD OF trigger execution but prior to the AFTER trigger execution. If the constraints are violated, the INSTEAD OF trigger actions are rolled back and the AFTER trigger is not executed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2004, 13:53:34 |
|
||
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
>>А тебе необходимо общую сумму постоянно хранить в таблице или все таки она лишь иногда нужна для отчета? IMHO лучше считать именно в том месте где требуется? Да, лучше считать, НО не всегда удается считать достаточно быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2004, 13:55:37 |
|
||
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
Вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 08:54:10 |
|
||
|
Когда и для чего народ использует триггеры?
|
|||
|---|---|---|---|
|
#18+
aleks2>>А тебе необходимо общую сумму постоянно хранить в таблице или все таки она лишь иногда нужна для отчета? IMHO лучше считать именно в том месте где требуется? Да, лучше считать, НО не всегда удается считать достаточно быстро. Согласен, хороший пример: Это как бы идет перераспределение времени затраченное на подсчет Т.е. время на вычисление все одно тратиться, то малыми дозами и в момент изменения конкретной записи - Если есть огромная табла, по которой много всяких статистических отчетов строится, да еще и часто - то применение триггеров очень даже выход!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 12:22:59 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32772348&tid=1670485]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
85ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 406ms |

| 0 / 0 |
