У меня есть две таблицы SQL ctgl_geometry
и ctgl_vertices
Вставка данных с помощью внешнего ключа SQL
ctgl_geometry
будет хранить геометрию как точки соединены друг с другом, поэтому он имеет идентификатор, одно значение, число вершин и внешний ключ, чтобы связать идентификатор, чтобы получить список значений этой геометрии
CREATE TABLE ctgl_geometry (
Id int primary key,
otherVal int,
NoVertices int,
vertexID int
);
create table ctgl_vertices
(
Id int primary key,
GeometryId int,
val int
);
, например, если имеется список вершин {0,1,6,5,4}
из длины 5 я хранить его вершины таблицы как
INSERT INTO ctgl_vertices VALUES
(1,101,0),
(2,101,1),
(3,101,6),
(4,101,5),
(5,101,4);
и в геометрии, как:
INSERT INTO ctgl_geometry VALUES
(1, 10,5,101);
ссылка, чтобы узнать список.
Но я не знаю, как сохранить значения, если я не знаю значение идентификатора (101 в примере)
Так я думал об использовании IDENT_CURRENT
, чтобы узнать последние вставленные вершины табличное значение, как:
SELECT IDENT_CURRENT('ctgl_vertices ') + IDENT_INCR('ctgl_vertices ');
и результат присвоить его внешний ключ ctgl_geometry
vertexID
Но я думаю, что будет лучший способ сделать это .. .
Как вставить список вершин, а затем присвоить значение геометрии?
Я также использую этот запрос для получения значений:
select g.NoVertices,v.val from ctgl_geometry g
inner join ctgl_vertices v
on g.vertexID = v.GeometryId where g.otherVal = 10;
и получить
NoVertices val
5 0
5 1
5 6
5 5
5 4
4 1
4 2
4 7
4 6
4 2
4 3
4 8
4 7
4 4
4 5
4 10
4 9
4 5
4 6
4 11
4 10
4 6
4 7
4 12
4 11
4 7
4 8
4 13
4 12
В каких столбцах находятся столбцы Identity в ваших таблицах? Также вы не определили ограничения внешнего ключа в схемах таблиц? –
Не уверен, что я понял, но похоже, что ваш ** 101 ** является 'vertexID' в первой таблице и' GeometryId' в другом. –
да, на самом деле хотелось бы, чтобы некоторые помогли переопределить схему и вставить запросы ... – Edgar