Diskuze: unikátní hodnoty

Ostatní jazyky SQL SQL a databáze unikátní hodnoty

Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

Ahoj nevím si rady. Potřebuji zapsat do tabulky pouze unikátní hodnoty a tento příkaz z knížky mi nefunguje. Mohl by někdo poradit jak na to.

IF NOT EXISTS (SELECT * FROM kapsička WHERE vec = 'pero')
  INSERT INTO kapsička VALUES ('pero');
IF NOT EXISTS (SELECT * FROM kapsička WHERE vec = 'nozik')
  INSERT INTO kapsička VALUES ('nozik');
 
Odpovědět 6.1.2014 18:28
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Milan Gallas
Milan Gallas:

a samotná tabulka:

CREATE TABLE kapsička
(
  vec VARCHAR(15) NOT NULL UNIQUE
);
 
Nahoru Odpovědět 6.1.2014 18:29
Avatar
Kit
Redaktor
Avatar
Odpovídá na Milan Gallas
Kit:
INSERT IGNORE INTO kapsička VALUES ('pero');
INSERT IGNORE INTO kapsička VALUES ('nozik');
Nahoru Odpovědět 6.1.2014 20:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Kit
Milan Gallas:

Jo a nevíš prosím, proč mi nefunguje tento kud kódu:

INSERT IGNORE INTO zakaznici(jmeno, adresa, email)
VALUES('DD', 'DD', 'email@seznam.cz')

zákazník se zapíše vždy nový a to já nechci :(

 
Nahoru Odpovědět 18.1.2014 17:55
Avatar
Kit
Redaktor
Avatar
Odpovídá na Milan Gallas
Kit:

Sloupec 'jmeno' zřejmě nemáš UNIQUE.

Nahoru Odpovědět 18.1.2014 18:01
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Milan Gallas
Milan Gallas:

Už možná začímńám být otravný, ale nejde mi do hlavy, v čem je chyba:
Chyba

SQL-dotaz:

CREATE TABLE `shop`.`zakaznici` (
`id_zakaznik` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`jmeno` TEXT NOT NULL ,
`adresa` TEXT NOT NULL ,
`email` TEXT NOT NULL ,
UNIQUE (
`jmeno`
)
) ENGINE = InnoDB;

MySQL hlásí: Dokumentace
#1170 - BLOB/TEXT column 'jmeno' used in key specification without a key length

 
Nahoru Odpovědět 18.1.2014 18:17
Avatar
Kit
Redaktor
Avatar
Odpovídá na Milan Gallas
Kit:

Indexovat můžeš jen CHAR nebo VARCHAR do délky 255 znaků.

Nahoru Odpovědět 18.1.2014 18:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Gallas
Redaktor
Avatar
 
Nahoru Odpovědět 18.1.2014 18:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.