0

私はアンドロイドアプリを設計しています。次のテーブルを作成したいと思います。

テーブル名: EXE1

nAME  m1 m2 m3 m4
P1    23 34 35 36
P2    09 89 34 35
P3    89 12 13 14 

上記の表のように、日付 nd に基づく整数のみを入力したいのですがm1、 、 m2、は異なる列でm3 m4ありp1p2p3は定数である異なる行です。

使ってみたのですが、途中でAUTOINCREMENTやめられp3ず、m1入力 したいところに関係なく入力できました。m2m3

作成方法を教えてください。

4

2 に答える 2

1

わからないところがあるのではないでしょうか?どうしたの:

CREATE TABLE EXE1 (
  nAME VARCHAR(15),
  m1   INT,
  m2   INT,
  m3   INT,
  m4   INT
);

INSERT INTO EXE1
  (nAME, m1, m2, m3, m4)
VALUES
  ('P1', 23, 34, 35, 36),
  ('P2', 09, 89, 34, 35),
  ('P3', 89, 12, 13, 14)
;
于 2013-06-12T22:14:36.007 に答える
0

MySQL では、コマンドを使用してテーブルの行数を直接制御することはできません。また、文字列フィールドを PK としてテーブルを作成することは、実際にはお勧めできません。
必要なものの概算は、整数の auto_increment id を持つテーブルを作成し、一意のインデックス フィールドを追加することです。

CREATE  TABLE IF NOT EXISTS `exe1` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `exe_name` VARCHAR(15) NULL ,
  `m1` INT UNSIGNED NOT NULL DEFAULT 0 ,
  `m2` INT UNSIGNED NOT NULL DEFAULT 0 ,
  `m3` INT UNSIGNED NOT NULL DEFAULT 0 ,
  `m4` INT UNSIGNED NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`id`) ,
  UNIQUE INDEX `exe_name_UNIQUE` (`exe_name` ASC) )
ENGINE = InnoDB;

DELIMITER $$
CREATE TRIGGER `exe_insert` BEFORE INSERT ON exe1
FOR EACH ROW BEGIN
  SET NEW.exe_name = IFNULL(NEW.exe_name, CONCAT("P",NEW.id));
END$$
DELIMITER ;

呼び出された単純なトリガーは、指定されていない場合、 exe_insert新しい行を生成します。exe_name


MySQLのドキュメントから、

UNIQUE インデックスは、インデックス内のすべての値が個別でなければならないという制約を作成します。既存の行と一致するキー値を持つ新しい行を追加しようとすると、エラーが発生します。すべてのエンジンで、UNIQUE インデックスは、NULL を含むことができる列に対して複数の NULL 値を許可します。 [...]

また、トリガーについても読む価値があります。

于 2013-06-20T07:31:02.650 に答える