Jump to content
php.lv forumi

DUPLICATE KEY


leisure

Recommended Posts

INSERT INTO `db_config` ( `id` , `cfg_name` , `cfg_value` , `cfg_comment` ) 
VALUES (
NULL , 'statechange', 1, ''
);

 

(cfg_name ir unikaals)

Kaa uzraxtiit INSERT izteiksmi, lai pieprasiijums neizpildiitos, ja dubleejas cfg_name vertiba?

 

Edit: Runa ir par MySQL

Edited by leisure
Link to comment
Share on other sites

Kāda ir tabulas definīcija? (nu kollonu tipi, atslēgas, - tas viss ko tu raksti pie CREATE TABEL).

 

CREATE TABLE IF NOT EXISTS `db_config` (

`id` int(3) NOT NULL auto_increment,

`cfg_name` varchar(255) NOT NULL default '',

`cfg_value` varchar(255) NOT NULL default '',

`cfg_comment` text NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `cfg_name` (`cfg_name`)

)

TYPE=MyISAM

COMMENT='Konfigurācijas tabula!'

AUTO_INCREMENT=0

Link to comment
Share on other sites

Tev taču ir UNIQUE KEY `cfg_name` (`cfg_name`)

Tātad kolonnā cfg_name paredzēts likt unikālas vērtības.

Kāpēc tur gribi iestūķēt kautko neunikālu?

Ja tiešām tiešām gribi (esi par to drošs?) tad izmet šo unikalitātes atslēgu no tabulas definīcijas.

Link to comment
Share on other sites

doma vispar bija ja lietotajs megjina iestukjet to pashu ieraxtu velreiz datubaazee, tad vnk vaig lai izmet erroru ka tads ieraksts jaw eksistee...

nju ja sawadaak newar tad laikam ka vaidzees taisiit 2us pieprasiijumus... SELECT un pec tam INSERT ja no select buus num_rows bus FALSE

 

vai tomer ir vel kaadi savaadaaki risinaajumi?

Link to comment
Share on other sites

Ui.. es neizlasīju pareizi tavu jautājumu. Sapratu, ka tu gribi lai ieliekās, nevis lai neieliekās.

 

Tieši tā kā tu dari ir jādara. SELECT un pēc tam INSERT. Vēl variants - likt tāpatās vienkārši ar INSERT un pēc tam pārbaudīt mysql_errno() vai atgriež kautkādu konstantu integeru (tb kļūdas numurs). Ja tāds ir, tad pārbaudot uz to, tu vari zināt, ka tiek mēģināts likt unikālu vērtību.

Link to comment
Share on other sites

×
×
  • Create New...