SQL ServerでDBを作成しデータをinsertしたメモ
SQLサーバにデータベースを作成してデータを挿入してみた。
これをファイルにして、バッチで実行させてみたい。
-- Create Database
IF NOT EXISTS (select * from master..sysdatabases where name='DB_CHK')
CREATE DATABASE DB_TEMP COLLATE Japanese_BIN2
GO
USE DB_CHK;
-- select object_id('Student');
-- create table
if object_id('Student') is null
CREATE TABLE Student (
StudentGPAID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
GradeYear TINYINT NOT NULL,
Semester NVARCHAR(20) NOT NULL,
GradeScore DECIMAL(5,2) NULL,
GPA CHAR(1) NULL,
CompletedFlag BIT NOT NULL DEFAULT (0)
)
go
-- Auto rollback when happened Error.
SET XACT_ABORT ON
begin transaction
begin try
insert into Student ( GradeYear, Semester, GradeScore, GPA, CompletedFlag) values ( 19, '3学期', 1.01, 'A', 1);
insert into Student ( GradeYear, Semester, GradeScore, GPA, CompletedFlag) values ( 20, '2学期', 2.02, 'B', 0);
insert into Student ( GradeYear, Semester, GradeScore, GPA, CompletedFlag) values ( 21, '1学期', 3.12, 'C', 1);
insert into Student ( GradeYear, Semester, GradeScore, GPA, CompletedFlag) values ( 22, '2学期', 4.22, 'D', 0);
insert into Student ( GradeYear, Semester, GradeScore, GPA, CompletedFlag) values ( 23, '3学期', 5.99, 'E', 1);
insert into Student ( GradeYear, Semester, GradeScore, GPA, CompletedFlag) values ( 24, '2学期', 6.22, 'F', 0);
insert into Student ( GradeYear, Semester, GradeScore, GPA, CompletedFlag) values ( 31111, '1学期', 7.82, 'G', 1);
end try
begin catch
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
while(@@trancount > 0)
begin
rollback transaction
end
end catch
if (@@trancount <> 0)
begin
commit transaction;
end
-- テーブルカラム全削除
-- truncate table Student;
参考
- SQL の検索条件内で照合順序を指定する方法(大文字、小文字を区別する/しない など)
- 2.16 ネイティブ コンパイル SP での SELECT 時の BIN2 照合順序
- 複数の挿入または更新に関するトランザクションを使用する適切な方法
→ロールバックの方法が詳しく記載されている。
コメント
コメントを投稿