You will save resources and gain performance by reusing your existing circle rather than destroying and recreating a new circle.
You have a scoping issue in your code.
Since you're creating var circle
inside your if statement, that circle variable is lost after the if completes.
You have several ways of "remembering" the circle.
The easiest way is simply declare var circle
globally (outside and before the if statement).
You can also give the circle an id and later ask the layer to fetch the object with that id:
var circle = new Kinetic.Circle({
id="myCircle",
x: mouseX,
y: mouseY,
radius: 30,
fill: 'red',
stroke: 'black',
strokeWidth: 1,
draggable: true,
name:'click_spot'
});
// get the object by its id
var myCircle = layer.get("#myCircle");
// then you can use this reference to make your changes
myCircle.setX(mouseX);
myCircle.setY(mouseY);
layer.draw();