This does not work as I am drawing the information from 2 tables. I did use
the NEW operator and every combination I could think of. Below I'll include
the triggers and so on. What the deal is that I have a query to find
locations within a certain radius. BUT from what I read in the table with
locations I need to have latitude and longitude. I was trying to make this
automatically populated so that the user would not have to do it.

Anyhow :

Triggers:
CREATE TRIGGER InsPopCoord AFTER INSERT ON locations FOR EACH ROW   UPDATE
locations, zipcodes SET NEW.locations.test1=zipcodes.lat,
NEW.locations.test2=zipcodes.lon WHERE  (NEW.locations.zip=zipcodes.zip AND
(NEW.locations.test1 IS NULL) AND (NEW.locations.test2 is NULL));

CREATE TRIGGER UpdPopCoord AFTER UPDATE ON locations FOR EACH ROW   UPDATE
locations, zipcodes SET NEW.locations.test1=zipcodes.lat,
NEW.locations.test2=zipcodes.lon WHERE  (NEW.locations.zip=zipcodes.zip AND
(NEW.locations.test1 IS NULL) AND (NEW.locations.test2 is NULL));

The query necessitating the lat and lon:

-sql=('SELECT b.zip, b.state,b.storename, b.address1, b.address2, b.city,
b.state, b.zip, 
    ROUND((3956 * (2 * ASIN(SQRT(
    POWER(SIN(((a.lat-b.lat)*0.017453293)/2),2) +
    COS(a.lat*0.017453293) *
    COS(b.lat*0.017453293) *
    POWER(SIN(((a.lon-b.lon)*0.017453293)/2),2))))),2) AS distance
    FROM zipcodes a, locations b
    WHERE
    a.zip = "' ($zip) '"
    GROUP BY distance
    having distance <= ' ($range) ';');


The table structures :



Thanks

Steffan

---------------------------------------------------------------
T E L  6 0 2 . 5 7 9 . 4 2 3 0 | F A X  6 0 2 . 9 7 1 . 1 6 9 4
Steffan A. Cline
[EMAIL PROTECTED]                             Phoenix, Az
http://www.ExecuChoice.net                                  USA
AIM : SteffanC          ICQ : 57234309
The Executive's Choice in Lasso driven Internet Applications
                                  Lasso Partner Alliance Member
---------------------------------------------------------------


> From: "Ian Sales (DBA)" <[EMAIL PROTECTED]>
> Date: Mon, 10 Oct 2005 08:51:55 +0100
> To: "Steffan A. Cline" <[EMAIL PROTECTED]>
> Cc: mysql@lists.mysql.com
> Subject: Re: Triggers
> 
> Steffan A. Cline wrote:
> 
>> Upon insert or update I get the following error:
>> 
>> ERROR 1442 (HY000): Can't update table 'locations' in stored
>> function/trigger because it is already used by statement which invoked this
>> stored function/trigger.
>> 
>> What exactly is the meaning of this? Is there no way around this? I only
>> want to update the one that was just inserted/updated.
>>  
>> 
> - you cannot use a table in a trigger which is triggered by an action on
> that self-same table, as this is recursive. You can, however, use NEW as
> a synonym for the data being changed which fires off the trigger. E.g.,
> 
> CREATE TRIGGER InsPopCoord AFTER INSERT ON locations FOR EACH ROW
> UPDATE zipcodes
> SET zipcodes.lat=NEW.lat, zipcodes.lon=NEW.lon
> WHERE  zipcodes.zip=NEW.zip;
> 
> 
> - ian
> 
> -- 
> +-------------------------------------------------------------------+
> | Ian Sales                                  Database Administrator |
> |                                                                   |
> |                              "All your database are belong to us" |
> | ebuyer                                      http://www.ebuyer.com |
> +-------------------------------------------------------------------+
> 
> 
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> 


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to