SQL-Server

hallo habe eine allgemeine frage
wie könnten die inserts für die beiden creates aussehen…komme nicht mit den identys weiter.
sollte sql-server funktionsfähig sein.
Danke für die hilfe

create table Projekt
(
PID int identity primary key,
Name varchar(100),
Beschreibung text,
Ansprechpartner varchar(100),
Webseite varchar(50)
)

create table GV
(
GVID int identity primary key,
Bezeichnung varchar(30),
PID int references Projekt,
)

danke für die Hilfe

LG
pe

Wir sind hier in einem PostgreSQL-Forum. Das hat erst einmal gar nichts mit SQL-Server zu tun.
Passenden Support für SQL-Server verkauft dir bestimmt Microsoft :wink:
Daher habe ich den Thread mal in das Forum für “Andere Datenbanken” verschoben.

Zum Thema: Was hast du denn bisher probiert und was hat nicht funktioniert?

Wäre es PostgreSQL, so wäre die Antwort DEFAULT und CURRVAL().

Andreas

create table B
(
BID int identity primary key,
Vorname varchar(20),
Nachname varchar(30),
Adresse varchar(200),
Email varchar(100),
Username varchar(20),
Passwort varchar(20)
)

go

create table h_r
(
BID int references B,
Primary key (BID)
)

hallo vielleicht kann mir jemand sagen, wie der Insert befehl aussehen könnte für die Tabelle h_r
ich weiss nicht was ich im insert schreiben soll für die Tabelle h_r?
wenn auf die Tabelle B referenziert wird und dort identity verwendet wird.
Danke wäre echt eine Hilfe
LG
pe



test=# create table ta(id serial primary key, value text);
NOTICE:  CREATE TABLE will create implicit sequence "ta_id_seq" for serial column "ta.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "ta_pkey" for table "ta"
CREATE TABLE
Zeit: 391,232 ms
test=*# create table tb(ta_id int references ta, value text);
CREATE TABLE
Zeit: 37,092 ms
test=*# insert into ta(id, value) values(default, 'so würde es in PG gehen');
INSERT 0 1
Zeit: 0,650 ms
test=*# insert into tb(ta_id, value) values(currval('ta_id_seq'), 'aber das sagte ich ja schon');
INSERT 0 1
Zeit: 33,453 ms
test=*# select * from ta;
 id |          value
----+-------------------------
  1 | so würde es in PG gehen
(1 Zeile)

Zeit: 0,242 ms
test=*# select * from tb;
 ta_id |            value
-------+-----------------------------
     1 | aber das sagte ich ja schon
(1 Zeile)

Zeit: 0,215 ms
test=*# rollback;
ROLLBACK
Zeit: 1,729 ms
test=#

Andreas

hallo,
danke akretschmer für dein post…habe kurz eine frage noch ob serial das gleiche ist wie identity im sql-server management.

Ich kenne MS-SQL-Server nicht, daher kann ich die Frage nicht beantworten.

Vergleich selber PostgreSQL: Documentation: Manuals: PostgreSQL 8.4: Numeric Types mit M$-SQL.

Andreas

Nein

Ein serial ist nichts anderes als eine “normale” Spalte mit dem Datentyp integer dessen default Wert von einer Sequence kommt.

Eine Identity Spalte beim SQL Server hat viel mehr Einschränkungen (man kann z.B. nicht so ohne weiteres beim INSERT oder UPDATE einen Wert dafür angeben)

hallo,

danke castorp…
wie würde ein insert in meiner h_r tabele aussehen.
Danke für die Hilfe

LG
pe

Keine Ahnung.

Da gibt es irgendeine Funktion mit der Du den letzten Identity Wert auslesen kannst.
Da musst Du im Handbuch nachsehen.