Las bases de datos están orientadas a conjuntos y los activadores no son diferentes. Se disparará un disparador cuando se realice una operación determinada y esa operación pueda afectar a varias filas. Por lo tanto, la pregunta "Say I want to know the Primary Key of that row"
es un nombre inapropiado. Podría haber múltiples filas insertadas.
SQL Server proporciona dos tablas especiales para los desencadenadores DESPUÉS llamados inserted
y deleted
que representan las filas que fueron insertadas o eliminadas por una acción y están estructuradas de forma idéntica a la tabla afectada. Un desencadenador de actualización podría rellenar inserted
y deleted
mientras que un desencadenador de inserción solo llenaría la tabla inserted
.
de:
pero el destinatario de correo electrónico se decide en función de un valor en una segunda tabla, donde se encuentra la clave de identificación extranjera en la primera tabla (que es el que tiene el gatillo
La respuesta a esta pregunta es utilizar la tabla inserted
(que nuevamente, debe suponer que podría tener varias filas) para recorrer las filas y enviar un correo electrónico. Sin embargo, recomendaría no poner lógica de correo electrónico en un desencadenador. , Recomendaría poner esa lógica en un procedimiento almacenado y enviar su correo desde t sombrero.
Como referencia: Create Trigger
@ John: El producto se llama "SQL Server", no "MSSQL". "MSSQL" se puede confundir fácilmente con "MySQL". Además, al hacer una pregunta sobre SQL Server, sugiero que use la etiqueta "sql-server". "sql" es para preguntas generales sobre el lenguaje SQL. –
Ok gracias por la nota. Lo haré. – johnshaddad
¿Su pregunta es simplemente sobre cómo definir un desencadenante o cómo escribir un activador que puede usar para operar en las filas afectadas? Si es el último, entonces debería considerar reformular su pregunta. – Thomas