При запуске интервала он будет длиться вечно, если вы его не очистите.
Ваш первый интервал, который был запущен при первом вызове, все еще работает в фоновом режиме. Это хорошо видно на примере ниже.
Вы должны использовать clearInterval()
function timer() {
var t = 3;
console.log("timer started t = " + t);
setInterval(function() {
if (t >= 0) {
document.getElementById("timer").innerHTML = t;
console.log(t);
t--;
} else {
console.log("Time up");
document.getElementById("timer").innerHTML = "Time Up!";
}
}, 1000);
console.log("timer stopped t = " + t);
}
Первая вещь, которую я сделал бы, рекомендуют использовать ORM как Linq-To-Sql или NHibernate, который даст Вам объектные представления Вашей модели данных, которые делают намного более простым обработать сложные вещи как many-many операции CRUD.
Если бы ORM не является частью Вашего комплекта инструментальных средств затем, вот то, как это посмотрело бы в СОЛЬ.
Users UserAddresses Addresses ======= ============= ========= Id Id Id FirstName UserId City LastName AddressId State Zip
К нашим таблицам присоединяются как это:
Users.Id -> UserAddresses.UserId Addresses.Id -> UserAddresses.AddressId
SELECT Users.* FROM Addresses INNER JOIN UserAddresses ON Addresses.Id = UserAddresses.AddressId INNER JOIN Users ON UserAddresses.UserId = Users.Id WHERE (Addresses.Id = @AddressId)
SELECT Addresses.* FROM Addresses INNER JOIN UserAddresses ON Addresses.Id = UserAddresses.AddressId INNER JOIN Users ON UserAddresses.UserId = Users.Id WHERE (Users.Id = @UserId)
SELECT *
FROM a
WHERE id IN (SELECT aid FROM ab WHERE bid = 1234)
или
SELECT a.*
FROM a
JOIN ab ON a.id = ab.aid
WHERE ab.aid = 12345
Вставить, который зависит от Вашей базы данных (например, являются ли первичные ключи от последовательностей, автоматически сгенерированных или сгенерированных некоторым другим способом или просто составными ключами). Но Вам просто нужно:
Для тех данных:
INSERT INTO a VALUES (...)
Для отношений:
INSERT INTO ab VALUES (...)
Для получения всех записей в таблице A на основе ключа B, на английском языке, Вы хотите записи в Таблице A, которые имеют запись Соединения с тем ключом TableB (Предположите, что tableA_B имеет два седла Внешнего ключа, (TabAFK и TabBFK)
Select * from TableA A
Where pK In (Select Distinct TabAFK From tableA_B
Where TabBFK = @TableBKeyValue)
То же самое для другого направления
Select * from TableB B
Where pK In (Select Distinct TabBFK From tableA_B
Where TabAFK = @TableAKeyValue)
Для вставки новой записи сделайте нормальную вставку в TableA и TableB по мере необходимости... Вставляет в объединяющую таблицу (tableA_B), просто два pks от двух основных таблиц
Insert TableA (pk, [other columns]) Values(@pkValue, [other data)
Insert TableB (pk, [other columns]) Values(@pkValue, [other data)
- Затем вставьте в Объединяющую таблицу для каждой ассоциации, которая существует...
Insert tableA_B (TabAFK, TabBFK) Values(@PkFromA, @PkFromB)
1) выберите tableA.* от tableA присоединяются к tableA_B на tableA.id = tableA_B.idA где tableA_B.idB = somevalue
2) выберите tableB.* от tableB, оставленного соединение tableA_B на tableB.id = tableA_B.idB, где tableA_B.idA = somevalue
3) вставьте зависит от Вашей базы данных, но вставьте в a, вставьте в b и затем вставьте в a_b; даже с ограничениями на таблицы это должно проложить себе путь.
подсказка: не используйте оператор IN для 1/2