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 照合順序
- 複数の挿入または更新に関するトランザクションを使用する適切な方法
→ロールバックの方法が詳しく記載されている。
コメント
コメントを投稿