質問編集履歴
1
「試したこと」の書き方を変更。回答内容を追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -56,9 +56,8 @@
|
|
56
56
|
RAISERROR 44444 '''SID'' フィールドでは Null 値は使えません。'
|
57
57
|
ROLLBACK TRANSACTION
|
58
58
|
END
|
59
|
-
|
60
|
-
↓
|
59
|
+
``` ↓
|
61
|
-
|
60
|
+
```SQL
|
62
61
|
IF (SELECT Count(*) FROM inserted WHERE SID IS NULL) > 0
|
63
62
|
BEGIN
|
64
63
|
RAISERROR('44444 ''SID'' フィールドでは Null 値は使えません。',16,1);
|
@@ -71,4 +70,18 @@
|
|
71
70
|
メッセージ 515、レベル 16、状態 2、行 3
|
72
71
|
テーブル '生産管理システム.dbo.SEIZOU' の列 'SID' に値 NULL を挿入できません。この列では NULL 値が許可されていません。UPDATE は失敗します。
|
73
72
|
|
74
|
-
※トリガーの判定に行かない
|
73
|
+
※トリガーの判定に行かない
|
74
|
+
|
75
|
+
##追記:2019/10/28
|
76
|
+
回答から:
|
77
|
+
[RAISERROR(Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/raiserror-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15)
|
78
|
+
[RAISERROR issue since migration to SQL Server 2012](https://stackoverflow.com/questions/21669227/raiserror-issue-since-migration-to-sql-server-2012)
|
79
|
+
|
80
|
+
(※ソースコードの変更点のコードを見やすく分けました)RAISERROR文は
|
81
|
+
RAISERROR( msg_str, severity ,state) の形が例文にもあるので引数の順番は大丈夫だと思うのですが
|
82
|
+
Serverityの値に細かい決まりがあった事と、例文ではTRY~CATCHの中で使っているようですので原文をどう書き直せばいいか考えてみます。
|
83
|
+
|
84
|
+
また、sys.messages カタログビューに一度登録して、RAISERROR ( msg_id ,severity ,state}のようにする方法があるようですが
|
85
|
+
こっちの方が意図した方法のような気がしました。こっちの方が書き直すのが難しそうですが…
|
86
|
+
|
87
|
+
THROW文は特にTRY~CATCHを使わなければいけないようですので、書いたことがないですが余裕ができたときに試せればと思います。
|