SQL Server trigger count updated columns before update
I have a table called "Users" with (id, name, lastname, dni, dob, city and lastUpdated)
What I want to do is, execute a trigger INSTEAD OF UPDATE and inside it count the number of columns that will be updated, and if the only column to be updated is "lasUpdated" column, then do not update anything.
CREATE TRIGGER USER_TRIGGER
ON USERS
INSTEAD OF UPDATE
AS
/* if the updated column is ONLY lasUpdated */
IF (COUNT(UPDATED_CLOUMNS) == 1 && UPDATED_COLUMN == "lasUpdated")
BEGIN
ROLLBACK TRANSACTION
RETURN
END
GO
Any idea of how can achieve it?
Thank you in advance.
add a comment |
I have a table called "Users" with (id, name, lastname, dni, dob, city and lastUpdated)
What I want to do is, execute a trigger INSTEAD OF UPDATE and inside it count the number of columns that will be updated, and if the only column to be updated is "lasUpdated" column, then do not update anything.
CREATE TRIGGER USER_TRIGGER
ON USERS
INSTEAD OF UPDATE
AS
/* if the updated column is ONLY lasUpdated */
IF (COUNT(UPDATED_CLOUMNS) == 1 && UPDATED_COLUMN == "lasUpdated")
BEGIN
ROLLBACK TRANSACTION
RETURN
END
GO
Any idea of how can achieve it?
Thank you in advance.
1
Usecolumns_updated()(docs.microsoft.com/en-us/sql/t-sql/functions/…) you'll need to actually run the update and print the bit pattern to know which pattern you are looking for,
– Dale Burrell
Nov 26 '18 at 21:04
1
You probably don't want aninstead of updatetrigger either as you then have to manually carry out any desired updates. You can accomplish your stated goal with andafter updatetrigger.
– Dale Burrell
Nov 26 '18 at 21:08
add a comment |
I have a table called "Users" with (id, name, lastname, dni, dob, city and lastUpdated)
What I want to do is, execute a trigger INSTEAD OF UPDATE and inside it count the number of columns that will be updated, and if the only column to be updated is "lasUpdated" column, then do not update anything.
CREATE TRIGGER USER_TRIGGER
ON USERS
INSTEAD OF UPDATE
AS
/* if the updated column is ONLY lasUpdated */
IF (COUNT(UPDATED_CLOUMNS) == 1 && UPDATED_COLUMN == "lasUpdated")
BEGIN
ROLLBACK TRANSACTION
RETURN
END
GO
Any idea of how can achieve it?
Thank you in advance.
I have a table called "Users" with (id, name, lastname, dni, dob, city and lastUpdated)
What I want to do is, execute a trigger INSTEAD OF UPDATE and inside it count the number of columns that will be updated, and if the only column to be updated is "lasUpdated" column, then do not update anything.
CREATE TRIGGER USER_TRIGGER
ON USERS
INSTEAD OF UPDATE
AS
/* if the updated column is ONLY lasUpdated */
IF (COUNT(UPDATED_CLOUMNS) == 1 && UPDATED_COLUMN == "lasUpdated")
BEGIN
ROLLBACK TRANSACTION
RETURN
END
GO
Any idea of how can achieve it?
Thank you in advance.
asked Nov 26 '18 at 21:00
user2246242user2246242
3616
3616
1
Usecolumns_updated()(docs.microsoft.com/en-us/sql/t-sql/functions/…) you'll need to actually run the update and print the bit pattern to know which pattern you are looking for,
– Dale Burrell
Nov 26 '18 at 21:04
1
You probably don't want aninstead of updatetrigger either as you then have to manually carry out any desired updates. You can accomplish your stated goal with andafter updatetrigger.
– Dale Burrell
Nov 26 '18 at 21:08
add a comment |
1
Usecolumns_updated()(docs.microsoft.com/en-us/sql/t-sql/functions/…) you'll need to actually run the update and print the bit pattern to know which pattern you are looking for,
– Dale Burrell
Nov 26 '18 at 21:04
1
You probably don't want aninstead of updatetrigger either as you then have to manually carry out any desired updates. You can accomplish your stated goal with andafter updatetrigger.
– Dale Burrell
Nov 26 '18 at 21:08
1
1
Use
columns_updated() (docs.microsoft.com/en-us/sql/t-sql/functions/…) you'll need to actually run the update and print the bit pattern to know which pattern you are looking for,– Dale Burrell
Nov 26 '18 at 21:04
Use
columns_updated() (docs.microsoft.com/en-us/sql/t-sql/functions/…) you'll need to actually run the update and print the bit pattern to know which pattern you are looking for,– Dale Burrell
Nov 26 '18 at 21:04
1
1
You probably don't want an
instead of update trigger either as you then have to manually carry out any desired updates. You can accomplish your stated goal with and after update trigger.– Dale Burrell
Nov 26 '18 at 21:08
You probably don't want an
instead of update trigger either as you then have to manually carry out any desired updates. You can accomplish your stated goal with and after update trigger.– Dale Burrell
Nov 26 '18 at 21:08
add a comment |
1 Answer
1
active
oldest
votes
One way is do the update in your INSTEAD OF trigger with:
WHERE inserted.Col1<>deleted.Col1
OR inserted.Col2<>deleted.Col2
etc, for all columns except "lasUpdated"
Note that if any of the columns can be NULL, you'll need to handle that in the logic as well.
thank you very much for the suggestion, it helped me a lot.
– user2246242
Dec 3 '18 at 17:21
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53488998%2fsql-server-trigger-count-updated-columns-before-update%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
One way is do the update in your INSTEAD OF trigger with:
WHERE inserted.Col1<>deleted.Col1
OR inserted.Col2<>deleted.Col2
etc, for all columns except "lasUpdated"
Note that if any of the columns can be NULL, you'll need to handle that in the logic as well.
thank you very much for the suggestion, it helped me a lot.
– user2246242
Dec 3 '18 at 17:21
add a comment |
One way is do the update in your INSTEAD OF trigger with:
WHERE inserted.Col1<>deleted.Col1
OR inserted.Col2<>deleted.Col2
etc, for all columns except "lasUpdated"
Note that if any of the columns can be NULL, you'll need to handle that in the logic as well.
thank you very much for the suggestion, it helped me a lot.
– user2246242
Dec 3 '18 at 17:21
add a comment |
One way is do the update in your INSTEAD OF trigger with:
WHERE inserted.Col1<>deleted.Col1
OR inserted.Col2<>deleted.Col2
etc, for all columns except "lasUpdated"
Note that if any of the columns can be NULL, you'll need to handle that in the logic as well.
One way is do the update in your INSTEAD OF trigger with:
WHERE inserted.Col1<>deleted.Col1
OR inserted.Col2<>deleted.Col2
etc, for all columns except "lasUpdated"
Note that if any of the columns can be NULL, you'll need to handle that in the logic as well.
answered Nov 26 '18 at 21:11
Tab AllemanTab Alleman
26.7k52440
26.7k52440
thank you very much for the suggestion, it helped me a lot.
– user2246242
Dec 3 '18 at 17:21
add a comment |
thank you very much for the suggestion, it helped me a lot.
– user2246242
Dec 3 '18 at 17:21
thank you very much for the suggestion, it helped me a lot.
– user2246242
Dec 3 '18 at 17:21
thank you very much for the suggestion, it helped me a lot.
– user2246242
Dec 3 '18 at 17:21
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53488998%2fsql-server-trigger-count-updated-columns-before-update%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Use
columns_updated()(docs.microsoft.com/en-us/sql/t-sql/functions/…) you'll need to actually run the update and print the bit pattern to know which pattern you are looking for,– Dale Burrell
Nov 26 '18 at 21:04
1
You probably don't want an
instead of updatetrigger either as you then have to manually carry out any desired updates. You can accomplish your stated goal with andafter updatetrigger.– Dale Burrell
Nov 26 '18 at 21:08