2016年2月1日月曜日

[SQLite]文字数制約

文字数の制約をつけたい。
ひとまず、型の後ろにカッコつけて数字かけばいいのかな?

using System;
using System.Data.SQLite;

namespace SampleCode
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (SQLiteConnection con = new SQLiteConnection("Data Source=:memory:"))
                {
                    con.Open();

                    using (SQLiteCommand cmd = con.CreateCommand())
                    {

                        cmd.CommandText = "CREATE TABLE [Sample] (" +
                                          "[data]  TEXT(5) NOT NULL" +
                                          ");";
                        cmd.ExecuteNonQuery();

                        cmd.CommandText = "INSERT INTO [Sample] ([name]) VALUES('123456');";
                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

あら・・・怒られない。
そもそも、文字数制限をかけれるような話をみたことないもんなぁ。

じゃ、別の方法で行ってみます。
cmd.CommandText = "CREATE TABLE [Sample] (" +
                                          "[data]  TEXT NOT NULL CHECK(LENGTH([data]) <= 5)" +
                                          ");";
怒られた。
constraint failed
CHECK constraint failed: Sample

1 件のコメント: