SELECT IF
Uwe Driessen
driessen at fblan.de
So Mär 29 11:15:08 CEST 2009
> > On Behalf Of Thomas Goik - auxion.de
> >
> >
> > > schon mal mit UNIQUE KEY Probiert?
> > > INSERT ... ON DUPLICATE KEY UPDATE
> > > http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
> > >
> table records
>
> id domain_id name type content ttl prio change_date
>
> id unique
> name index
> name, type index
> domain_id index
>
> problem für jede Domain existiert
>
> 1 A Record
> 1 SOA Record
> 2 NS Record
> 1 bis X MX Record
>
> Dazu kommen noch Subdomains usw. alle über domain_id in table Domains referiert.
>
> Ich kann keinen uniq über domain_id, name, type legen,
> Content ändert sich zumindest bei den SOA records auch beim Update
Ich spreche mal ein bisschen mit mir selber manchmal hilft es wenn anderen erklärt was man
möchte *g (nein ich höre noch keine Stimmen *gg)
SELECT IF( (
SELECT t2.id
FROM pdns.records t2
WHERE t2.name = 'abi-1993.net'
AND TYPE = 'SOA'
) >0, (
SELECT t2.id
FROM pdns.records t2
WHERE t2.name = 'abi-1993.net'
AND TYPE = 'SOA'
), (
SELECT max( t3.id ) +1
FROM pdns.records t3 )
);
Bringt mir sauber die werte bei bestehenden Datensätzen und auch die nächste ID
Eingebaut in
INSERT INTO pdns.records(
id,
domain_id,
name,
TYPE ,
content,
ttl,
prio,
change_date
)
SELECT (
SELECT IF( (
SELECT t2.id
FROM pdns.records t2
WHERE t2.name = 'abi-1993.net'
AND TYPE = 'SOA'
) >0, (
SELECT t2.id
FROM pdns.records t2
WHERE t2.name = 'abi-1993.net'
AND TYPE = 'SOA'
), (
SELECT max( t3.id ) +1
FROM pdns.records t3 )
)
), t1.id, 'abi-1993.net', 'SOA', concat( 'ns1.deltaweb.de. hostmaster.deltaweb.de.',
CURDATE( ) +0, '00 86400 7200 604800 1800' ) , 21600, 0, Unix_timestamp( )
FROM pdns.domains t1
WHERE t1.name = 'abi-1993.net' ON DUPLICATE
KEY UPDATE name = 'abi-1993.net',
domain_id = t1.id,
TYPE = 'SOA',
change_date = concat( 'ns1.deltaweb.de. hostmaster.deltaweb.de.', CURDATE( ) +0, '00 86400
7200 604800 1800' ) ,
ttl =21600,
prio =0,
change_date = Unix_timestamp( );
macht sogar sauber das Update bei einem bestehenden Datensatz aber fügt leider keinen
Neuen Datensatz ein also zurück zu Replace
>
>
Mit freundlichen Grüßen
Drießen
--
Software & Computer
Uwe Drießen
Lembergstraße 33
67824 Feilbingert
Tel.: +49 06708 / 660045 Fax: +49 06708 / 661397